#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
*/