我正在查看DCPU-16 的规范,我无法通过DIV指令理解溢出值的用途:
DIV a,b - 将a设置为a/b,将O设置为((a << 16)/ b)&0xffff.
任何人都可以在这里解释O的语义,它对什么有用?
看起来O给出了结果的小数部分(作为定点数).例如,考虑5/2:
a = 5 / 2 = 2 (integer part)
O = ((5 << 16) / 2) & 0xffff = (327680 / 2) & 0xffff = 32768
Run Code Online (Sandbox Code Playgroud)
如果将O视为16个二进制小数位数,则表示结果的0.5小数部分.
查看它的另一种方法是位的二进制结果是:
aaaaaaaaaaaaaaaa.OOOOOOOOOOOOOOOO
Run Code Online (Sandbox Code Playgroud)
5/2是
0000000000000010.1000000000000000
Run Code Online (Sandbox Code Playgroud)
通过检查可以看出,结果是5(101二进制)右移一位到小数位.