我正在写一个 CHIP8 模拟器。到目前为止,我写了所有东西,除了 opcode DXYN
,我为它寻找了一些解释,我在 SO 中找到了一个问题,其中有一个代码作为答案。在阅读代码时,我卡在了这段代码上,它用 C 语言说明if((data & (0x80 >> x)) != 0)
了它到底(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 回答