【发布时间】:2014-09-29 11:13:06
【问题描述】:
下面是通过 i(含)清除所有 MSB(最高有效位)的代码
public int clearBitsMSBThrough(int num, int i) {
int mask = ( 1 << (i + 1) ) - 1;
return num & mask;
}
我对“包容性”感到困惑。 例如,如果数字是 0011 1010 并且 i = 3。 掩码为0000 1111,结果为0000 1010,但位置3的位不清零。
我误解了这个问题吗? 我认为应该是:
int mask = (1 << i) - 1;
【问题讨论】:
-
Am I misunderstanding the question?有什么问题? -
问题是写一个方法来清除从 MSB 到 i (inclusive) 的所有位。谢谢!
-
那么,既然你说的是“
I think it should be: int mask = (1 << i) - 1;”,看来你已经知道问题所在和解决方案了 -
感谢您的帮助!
标签: bit-manipulation bit