1

バイト変数の最後の2ビットが1に設定されているかどうかを確認しようとしています.これは私が持っているものです:

if ((my_byte & (1 << 0)) == 1 && (my_byte & (1 << 1)) == 1)

ただし、コードがifステートメントに入らないため、機能していないように見える場合。my_byte の値が 3 であることは確かです。

私が間違っていることを誰かが知っていますか?

ご協力ありがとうございました。

4

2 に答える 2

4

使用する'if ((my_byte & 0b11) == 0b11)'

つまり、最後の 2 ビットが両方とも 1 に設定されている数値と数値の AND 演算を行っています。m_byte の最後の 2 ビットが 1 に設定されている場合にのみ、式は true になります。

于 2013-05-31T11:42:57.553 に答える
2

or2 番目のステートメントの値は2、ビットが設定されている場合です。

if ((my_byte & (1 << 0)) == 1 && (my_byte & (1 << 1)) == 2)

@johnchecn902 が示唆するように、 と書くとより明確になります(my_byte & (1 << 1)) == 0b10

これも2段階に分ける必要はありません。式全体は次のように簡略化できます。

if ((my_byte & 0b11) == 0b11)
于 2013-05-31T11:40:48.323 に答える