1/10(decimal) = 0.0001100110011... (binary)
我该怎么做?我是不是应该转换成二进制,然后除法?有人能给我看看吗?
发布于 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...
发布于 2015-04-28 19:38:12
下面是如何思考这个方法。
每次乘以2,你都会将数字的二进制表示左移1位。你已经将点之后的最高数字移到了1位,所以去掉那个数字,它就是你分数的第一个数字(最高,因此是最左边的)。再做一次,你就有了下一个数字。
通过除以余数作为下一位数来转换整数的基数是将数字向右移位。这就是为什么你会以相反的顺序得到数字,最先是最低的。
正如GoofyBall所指出的,这显然适用于任何基数,而不仅仅是2。
另一件需要考虑的事情是:如果要舍入到N位,请在N+1位停止。如果数字# N+1是1,则需要向上舍入(因为二进制数字只能是0或1,用下一个数字a 1截断与截断十进制数字5一样不准确)。
https://stackoverflow.com/questions/4987176
复制相似问题