How to remove a bit from a number and shift all bits to the right to fill the gap in JavaScript

1 Answer

0 votes
// 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

*/

 



answered 1 day ago by avibootz
edited 1 day ago by avibootz

Related questions

...