c++ - 理解CHIP8仿真器中的一段代码

标签 c++ emulation bit-shift opcode

我正在编写一个 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/

相关文章:

c++ - 删除 HBITMAP 对象时堆损坏

bash - 在 bash 脚本中模拟用户输入

ios - 如何通过整数获得垂直和水平对齐?

java - 从 Java ByteBuffer 中的字节获取低阶和高阶 nybbles

c++ - 用c++解决骑士之旅

C++ 运行 imagemagick 命令

c++ - 如何将点转换为点?

android - 索尼 xperia mini 安卓模拟器

keyboard - 是否有 USB 设备描述符来确定设备是 HID 还是键盘模拟?

Scala BitSet 和移位操作