以下は、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;