最佳答案的解决方案是
要检查一下,将数字x向右移动,然后按位和它:
bit = (number >> x) & 1;这将把位x的值放入变量位.
在假设以下内容时,让我感到困惑的是:
unsigned number = 5; //0101
int x = 2; //
Run Code Online (Sandbox Code Playgroud)
转移后(number >> x)我们得到了0001.但是我们将位1和2移开了,所以当我们按位AND时,我们不是在第三位而不是第二位,而不是第二位,在哪里x = 2?这不意味着如果我想检查是否x设置了位,我不应该这样做:
bit = (number >> (x - 1)) & 1);
Run Code Online (Sandbox Code Playgroud)