首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将小数转换为二进制?

如何将小数转换为二进制?
EN

Stack Overflow用户
提问于 2011-02-14 05:57:39
回答 2查看 103.1K关注 0票数 58

1/10(decimal) = 0.0001100110011... (binary)

我该怎么做?我是不是应该转换成二进制,然后除法?有人能给我看看吗?

EN

回答 2

Stack Overflow用户

发布于 2011-02-14 06:01:59

这可能有些令人困惑,但二进制中的小数位置将表示2的幂的倒数(例如,第一位、第二位、第三位和第四位小数的倒数分别为1/2、1/4、1/8、1/16 ),就像在小数中一样,小数位表示连续的10次方的倒数。

要回答你的问题,你需要弄清楚需要添加多少2的幂的倒数才能加到1/10。例如:

1/16 + 1/32 = 0.09375,相当接近1/10。加上1/64就结束了,1/128也一样。但是,1/256让我们更接近了。所以:

0.00011001二进制数= 0.09765625十进制数,这与您的要求很接近。

您可以继续添加越来越多的数字,因此答案将是0.00011001...

票数 17
EN

Stack Overflow用户

发布于 2015-04-28 19:38:12

下面是如何思考这个方法。

每次乘以2,你都会将数字的二进制表示左移1位。你已经将点之后的最高数字移到了1位,所以去掉那个数字,它就是你分数的第一个数字(最高,因此是最左边的)。再做一次,你就有了下一个数字。

通过除以余数作为下一位数来转换整数的基数是将数字向右移位。这就是为什么你会以相反的顺序得到数字,最先是最低的。

正如GoofyBall所指出的,这显然适用于任何基数,而不仅仅是2。

另一件需要考虑的事情是:如果要舍入到N位,请在N+1位停止。如果数字# N+1是1,则需要向上舍入(因为二进制数字只能是0或1,用下一个数字a 1截断与截断十进制数字5一样不准确)。

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

https://stackoverflow.com/questions/4987176

复制
相关文章

相似问题

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