Quick actions

cmd+k|ctrl+k

Navigation

Languages

pop_count

Snippet info

Language

C

Visibility

public

Author

evine

Created

2022-06-22T12:14:30.839499Z

Updated

2022-06-22T12:16:53.417426Z

#include <stdio.h>

unsigned pop_count(unsigned a) {
    unsigned b = (a & 0x55555555) + ((a & 0xAAAAAAAA) >> 1);
    unsigned c = (b & 0x33333333) + ((b & 0xCCCCCCCC) >> 2);
    unsigned d = (c & 0x0F0F0F0F) + ((c & 0xF0F0F0F0) >> 4);
    unsigned e = (d & 0x00FF00FF) + ((d & 0xFF00FF00) >> 8);
    unsigned f = (e & 0x0000FFFF) + ((e & 0xFFFF0000) >> 16);
    
    return f;
}

int main(void) {
    printf("%u\n", pop_count(0xFFFFFFFF));
    printf("%u\n", pop_count(0));
    printf("%u\n", pop_count(0xFFF0FFFF));
    return 0;
}
INFO