下面是关于通过 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;