gpt4 book ai didi

bit-manipulation - 在确定进位时如何应用 XOR?

转载 作者:行者123 更新时间:2023-12-03 23:06:54 25 4
gpt4 key购买 nike

我正在开发游戏机模拟器。我需要实现的 CPU 操作之一是添加一个字节 n到堆栈指针 sp (操作码 E8)。如果第 7 位有进位,则需要设置进位标志。我查看了此操作的两种实现,它们都遵循相同的进位检测逻辑。其代码大致如下:

int result = (sp + n) & 0xFFFF
boolean carry = ((sp ^ n ^ result) & 0x100) != 0

我已经通过一些例子解决了这个逻辑并且它确实有效,但我根本不明白它是如何工作的。我明白了 xor有效,但其应用背后的逻辑是什么?谢谢。

最佳答案

加法可以写成:

a + b = a ^ b ^ (c << 1)

哪里 c是每个位的进位( c << 1 是进位)。这也可以用作 implement addition .

因此如果 a ^ b部分再次从总和中异或,我们剩下 c << 1 .其中第 8 位是第 7 位的进位。

关于bit-manipulation - 在确定进位时如何应用 XOR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62006764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com