CHIP8エミュレーターを書いています。opcode を除いて、これまでのところすべてを書きました。そのDXYN
説明を探したところ、SO で質問が見つかり、コードが答えとしてありました。if((data & (0x80 >> x)) != 0)
コードを読んでいるときに、Cで正確に何をするかを言っているこのコードに行き詰まりました(data & (0x80 >> x))
か?
質問する
393 次
2 に答える
3
このif
ステートメントは、ビット #x がバイトに設定されているかどうかをチェックし、最上位ビットとして 0 を数えます。
Bit# 01234567
01001010 (0x4A has bit 1, 4 and 6 set)
(data & (0x80 >> x)) returns 0x40 for x=1
0x08 for x=4
0x02 for x=6
0x00 for all other values.
if((data & (0x80 >> x)) != 0)
言い換えると、x=1、x=4、x=6 について真です。
于 2013-07-10T11:02:10.520 に答える
2
それを分割すると、
0x80 >> x
値128
( ) をビット単位で0x80
右にシフトします。x
次の部分では、前の結果を のマスクとして使用してdata
、特定のビットが に設定されているかどうかを確認しdata
ます。
次に、全体がゼロに対してチェックされ、ビットが設定されているかどうかが確認されます。
于 2013-07-10T10:59:45.940 に答える