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

1 Answer

0 votes
using System;

class RemoveBitAndShiftProgram
{
    /*
        removeBitAndShift(number, position)
        -----------------------------------
        Removes the bit at the given position and shifts all higher bits right.

        Example:
            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
    */
    static int RemoveBitAndShift(int number, int position)
    {
        int left  = number >> (position + 1);            // bits above removed bit
        int right = number & ((1 << position) - 1);      // bits below removed bit

        return (left << position) | right;               // merge shifted left + right
    }

    /*
        printBinary(value)
        ------------------
        Idiomatic C# binary printing:
            Convert.ToString(value, 2) → binary string
            PadLeft(32, '0') → pad to 32 bits
            Insert spaces every 4 bits for readability
    */
    static void PrintBinary(int value)
    {
        string binary = Convert.ToString(value, 2).PadLeft(32, '0');

        for (int i = 0; i < binary.Length; i++) {
            Console.Write(binary[i]);
            if ((i + 1) % 4 == 0)
                Console.Write(" ");
        }
    }

    static void Main()
    {
        int number = 22;
        int position = 2; // remove bit 2 (0 = LSB)

        Console.WriteLine("Original number in binary:");
        PrintBinary(number);

        int result = RemoveBitAndShift(number, position);

        Console.WriteLine();
        Console.WriteLine();
        Console.WriteLine($"Number after removing bit {position} and shifting remaining bits:");
        PrintBinary(result);

        Console.WriteLine();
        Console.WriteLine();
        Console.WriteLine("Result 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 2 hours ago by avibootz

Related questions

1 answer 125 views
1 answer 122 views
122 views asked Feb 14, 2017 by avibootz
...