以下是通过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;
答案 0 :(得分:1)
public int clearBitsMSBThrough(int num, int i) {
int mask = (1 << i) - 1;
return num & mask;
}
浏览binary subtraction可能会对此有所帮助。