我正在设计一个简单的玩具指令集和随附的模拟器,我正在尝试找出要支持的指令。在算术方面,我目前有无符号加法、减法、乘法和除法。但是,我似乎无法找到以下问题的明确答案:哪些算术运算符需要有符号版本,哪些是无符号和二进制补码有符号版本等价的?
因此,例如,二进制补码中的 1111 等于 -1。如果你给它加 1 并假装它是一个无符号数,你会得到 0000,即使将它视为 -1 也是正确的。但是,这是否适用于所有数字?那么其他三个运算(减法、乘法、除法)呢?
最佳答案
加法和减法对于有符号和无符号 2s 补码是相同的,假设您要以大多数 CPU 的正常方式处理上溢/下溢,即只是环绕。乘法和除法是不同的。因此,无论符号如何,您只需要一个加法例程和一个减法例程,但是您需要单独的有符号和无符号乘法和除法。
关于binary - 哪些算术运算在无符号数和二进制补码有符号数上是相同的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21475286/