Tag: bitcount

查找仅使用按位函数表示2的补码所需的位数

我们可以假设一个int是2位恭维中的32位唯一合法的运算符是:! 〜&^ | + <> 此时我正在使用蛮力 int a=0x01; x=(x+1)>>1; //(have tried with just x instead of x+1 as well) a = a+(!(!x)); …最后2个语句重复32次。 每增加1次,x移位一位,!= 0,全部32位 使用测试编译器,它说我的方法在测试用例0x7FFFFFFF(0后跟31 1)上失败,并说这个数字需要32位来表示。 我不明白为什么这不是31(我的方法计算)谁能解释为什么? 我需要改变什么来解释这个?