私は 2 つの整数の個々のビットを操作しています (Ubuntu マシンでのコンパイルに g++ を使用しています)。
いくつかの中間ステップでは、ビット表現を次のようにしています
q = 11000000000000000000000000000000
q_1 = 00000000000000000000000000000001
ここで、ユニットの q と q_1 の位置が同じかどうかを確認したいと思います。(*q)&1==q_1
そのため、 if条件をチェックしていますが、正常に機能しています。
しかし、ユニットの q の位が 0 で q_1 の位が 1 であることを確認したいときはいつでも、そうすべきだと思ったのです((*q)&1==0) && (q_1==1)
が、期待どおりに動作しません。デバッグのために、 と の値を個別に編集したところ、 として出力されましcout
た。ただし、値が0 として出力されました。なぜですか?((*q)&1==0)
(q_1==1)
1
((*q)&1==0) && (q_1==1)
* EDIT : *関数では、q は参照によって渡されたため、*q を使用して値を取得しています。