// Removes the bit at the given position and shifts all higher bits right.
function removeBitAndShift(number, position) {
/*
number = 22 (10110)
position = 2 (0 = LSB)
Bits: 1 0 1 1 0
^ remove this bit
left = bits above removed bit
right = bits below removed bit
result = (left << position) | right
*/
const left = number >> (position + 1); // bits above removed bit
const right = number & ((1 << position) - 1); // bits below removed bit
return (left << position) | right; // merge shifted left + right
}
// Prints a 32-bit binary representation of a number.
function printBinary(value) {
/*
Uses:
value.toString(2) → binary string
padStart(32, '0') → pad to 32 bits
grouping into 4-bit chunks for readability
*/
const binary = value.toString(2).padStart(32, '0');
const grouped = binary.match(/.{1,4}/g).join(" ");
console.log(grouped);
}
// Main program
const number = 22;
const position = 2; // remove bit 2 (0 = LSB)
console.log("Original number in binary:");
printBinary(number);
const result = removeBitAndShift(number, position);
console.log("\nNumber after removing bit " + position + " and shifting remaining bits:");
printBinary(result);
console.log("\nResult as integer:", result);
/*
run:
Original number in binary:
0000 0000 0000 0000 0000 0000 0001 0110
Number after removing bit 2 and shifting remaining bits:
0000 0000 0000 0000 0000 0000 0000 1010
Result as integer: 10
*/