我在看 specification对于 DCPU-16,我无法理解 DIV 指令溢出值的用途:
DIV a, b - sets a to a/b, sets O to ((a<<16)/b)&0xffff.
任何人都可以在这里解释 O 的语义,它有什么用?
最佳答案
看起来 O 给出了结果的小数部分(作为定点数)。例如,考虑 5/2:
a = 5 / 2 = 2 (integer part)
O = ((5 << 16) / 2) & 0xffff = (327680 / 2) & 0xffff = 32768
如果您将 O 视为 16 位二进制小数位,则这表示结果的 0.5 小数部分。
另一种看待它的方式是以位为单位的二进制结果是:
aaaaaaaaaaaaaaaa.OOOOOOOOOOOOOOOO
5/2 是
0000000000000010.1000000000000000
通过检查可以看出,该结果是 5(101 二进制)右移一位到小数位。
关于assembly - DCPU-16 DIV 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10112671/