How do you randomly zero a bit in an integer?

后端 未结 13 2161
無奈伤痛
無奈伤痛 2021-02-05 10:11

Updated with newer answer and better test

Let\'s say I have the number 382 which is 101111110.

How could I randomly turn a bit which is not 0 to

13条回答
  •  眼角桃花
    2021-02-05 10:42

    EDIT: Fixed some logic.

    BitArray bits = new BitArray(new int[] { number } );
    
    randomIndex = new Random().Next(32);
    
    // check if bit is true, if not, goes to next bit and wraps around as well.
    for(int i = 0; i < 32; i++)
    {
        if(bits[randomIndex] == false)
        {
        randomIndex = (randomIndex + 1) % 32;
        }
        else
        {
            break;
        }
    }
    
    bits[randomIndex] = false;
    

提交回复
热议问题