2

3 ビットは最大 7 (4 + 2 + 1) まで保持できます。ビット単位の演算を使用してこれを計算しようとしています。

3 is 0b011 
~3 is 0b100

ビット単位の OR を実行すると、0b111 (つまり 7) が期待されます。代わりに私は得る

int result = (~3) | 3;
printf("%i\n", result);

-1

私は何を間違っていますか?

4

5 に答える 5

6

あなたはすべてを正しく行っています。N | ~N結果は、すべて 1 で構成される 2 進数表現の数値になります。このような数は、負の数の 2 の補数表現として解釈さ-1れます。

于 2013-04-23T02:12:36.013 に答える
0

コードでこれを行った後

  int result = (~3) | 3;

この行を追加

   result= result & 0x07

これにより、期待する答えが得られます。

于 2013-04-23T04:40:08.880 に答える