バイト変数の最後の2ビットが1に設定されているかどうかを確認しようとしています.これは私が持っているものです:
if ((my_byte & (1 << 0)) == 1 && (my_byte & (1 << 1)) == 1)
ただし、コードがifステートメントに入らないため、機能していないように見える場合。my_byte の値が 3 であることは確かです。
私が間違っていることを誰かが知っていますか?
ご協力ありがとうございました。
バイト変数の最後の2ビットが1に設定されているかどうかを確認しようとしています.これは私が持っているものです:
if ((my_byte & (1 << 0)) == 1 && (my_byte & (1 << 1)) == 1)
ただし、コードがifステートメントに入らないため、機能していないように見える場合。my_byte の値が 3 であることは確かです。
私が間違っていることを誰かが知っていますか?
ご協力ありがとうございました。
使用する'if ((my_byte & 0b11) == 0b11)'
つまり、最後の 2 ビットが両方とも 1 に設定されている数値と数値の AND 演算を行っています。m_byte の最後の 2 ビットが 1 に設定されている場合にのみ、式は true になります。
or
2 番目のステートメントの値は2
、ビットが設定されている場合です。
if ((my_byte & (1 << 0)) == 1 && (my_byte & (1 << 1)) == 2)
@johnchecn902 が示唆するように、 と書くとより明確になります(my_byte & (1 << 1)) == 0b10
。
これも2段階に分ける必要はありません。式全体は次のように簡略化できます。
if ((my_byte & 0b11) == 0b11)