首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DCPU-16 DIV指令

DCPU-16 DIV指令
EN

Stack Overflow用户
提问于 2012-04-11 19:32:39
回答 2查看 373关注 0票数 4

我正在查看DCPU-16的规格说明,并且很难理解DIV指令的溢出值的用途:

DIV a,b-将a设置为a/b,将O设置为((a<<16)/b)&0 0xffff。

有人能在这里解释O的语义含义吗?它有什么用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-11 19:48:19

看起来O给出了结果的小数部分(作为一个不动点数)。例如,考虑5/ 2:

代码语言:javascript
复制
a = 5 / 2 = 2 (integer part)
O = ((5 << 16) / 2) & 0xffff = (327680 / 2) & 0xffff = 32768

如果您认为O是16位二进制小数,那么这表示结果的0.5小数部分。

另一种看待它的方法是二进制比特的结果是:

代码语言:javascript
复制
aaaaaaaaaaaaaaaa.OOOOOOOOOOOOOOOO

5/2是

代码语言:javascript
复制
0000000000000010.1000000000000000

您可以通过检查来判断,结果是5 (101二进制)向右移动1位到小数位。

票数 6
EN

Stack Overflow用户

发布于 2012-04-11 19:49:46

((a<<16)/b)会给你除法的16位小数部分.

如果我们想要找到前三个小数位数,比如说,5/3,我们可以在(5000)上移动5个位置,除以3,然后取最后三个整数。5000/3是1666,所以小数5/3之后的前三位是.666。

这是因为“移动5位数以上”和“乘10”是一样的,乘法/除法是可交换的(顺序可以互换),所以(5 * 1000) / 3 = (5 / 3) * 1000 = 1.6666... * 1000 = 1666.666...

换句话说,在几个数字上移动5,除以3等于移动(5/3)为几个数字。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10112671

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档