、、のサンプル問題がありw=1、解決策はですが、理由がわかりませんか?y=7z=0x = ~(w && y) | y;x = -1
これが私の思考プロセスです:
(w && y)=(1 && 7)= 1〜1
1 inビットは
〜1in
ビットです0000 00011111 1110
ここから何をすべきかわからない。
、、のサンプル問題がありw=1、解決策はですが、理由がわかりませんか?y=7z=0x = ~(w && y) | y;x = -1
これが私の思考プロセスです:
(w && y)=(1 && 7)= 1〜1
1 inビットは
〜1in
ビットです0000 00011111 1110
ここから何をすべきかわからない。
最後のステップはビットごとのORであるため、次のようになります。
1111 1110 | 0000 0111 = 1111 1111
これは-1です。
ビット単位の〜1は1111 1110、
1111 1110または0000 0111であり1111 1111、1111 1111-1です。最上位ビットは負のフラグであり、負の数は減法混色です。そのため、符号付きバイトは-128まで保持できますが、127までしか保持できません。
あなたは正しい~(w && y)です1111...0。の最後のビット7は1であるため、|これを7で指定すると、、1111...1またはが得られ-1ます。
まず、ビット演算&の代わりにを使用する必要があります。&&次に、~1 = 111...1110計算後、 y(7)とORを1111..1111とって、-1の2の補数表現を取得します。