我正在编写一个 CHIP8 仿真器。到目前为止,我写了所有内容,除了操作码 DXYN
,我为它寻找了一些解释,然后我在 SO 中找到了一个问题,其中有一个代码作为答案。在阅读代码时,我被卡在了这段代码上,在 C 语言中说 if((data & (0x80 >> x)) != 0)
(data & ( 0x80 >> x))
到底做什么?
最佳答案
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 为真
关于c++ - 理解CHIP8仿真器中的一段代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17568851/