0

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

1 に答える 1