How to use the c++ equvalent to bitset with _Find_first() and _Find_next() to find set bits indexs in C

1 Answer

0 votes
#include <stdio.h>

// Function to print a 16-bit binary representation
void print_binary(unsigned short value) {
    for (int i = 15; i >= 0; i--) {
        printf("%d", (value >> i) & 1);
    }
    printf("\n");
}

// Function to find the first set bit index (least significant)
int find_first_set_bit_index(unsigned short value) {
    for (int i = 0; i < 16; i++) {
        if ((value >> i) & 1) {
            return i;
        }
    }
    return -1; // No bits set
}

// Function to print all set bit indexes
void print_set_bit_indexes(unsigned short value) {
    for (int i = 0; i < 16; i++) {
        if ((value >> i) & 1) {
            printf("%d ", i);
        }
    }
    printf("\n");
}

int main() {
    // Initialize a 16-bit value with selected bits set
    unsigned short bits = 0;
    bits |= (1 << 3);
    bits |= (1 << 5);
    bits |= (1 << 11);
    bits |= (1 << 14);

    // Print binary representation
    print_binary(bits);

    // Print index of first set bit
    int first = find_first_set_bit_index(bits);
    printf("First set bit at index: %d\n", first);

    // Print all set bit indexes
    printf("All the set bits indexes:\n");
    print_set_bit_indexes(bits);

    return 0;
}

  
 
/* 
run:
 
0100100000101000
First set bit at index: 3
All the set bits indexes:
3 5 11 14 
 
*/

 



answered Nov 3 by avibootz
...