const BIT_SIZE = 16;
// Print binary representation of the bits
function printBinary(bits: number): void {
const binary = bits.toString(2).padStart(BIT_SIZE, '0');
console.log(binary);
}
// Find the first set bit (least significant)
function findFirstSetBit(bits: number): number {
for (let i = 0; i < BIT_SIZE; i++) {
if ((bits >> i) & 1) {
return i;
}
}
return -1; // No bits set
}
function printSetBitIndexes(bits: number): void {
const indexes: number[] = [];
for (let i = 0; i < BIT_SIZE; i++) {
if ((bits >> i) & 1) {
indexes.push(i);
}
}
console.log(indexes.join(' '));
}
let bits = 0;
bits |= 1 << 3;
bits |= 1 << 5;
bits |= 1 << 11;
bits |= 1 << 14;
printBinary(bits);
console.log('First set bit at index:', findFirstSetBit(bits));
console.log('All the set bits indexes:');
printSetBitIndexes(bits);
/*
run:
"0100100000101000"
"First set bit at index:", 3
"All the set bits indexes:"
"3 5 11 14"
*/