作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我不知道如何将分数转换为二进制。当我搜索它时,有一个解决方案显示:
1 1
-- (dec) = ---- (bin)
10 1010
0.000110011...
-------------
1010 | 1.0000000000
1010
------
01100
1010
-----
0010000
1010
-----
01100
1010
-----
0010
我不知道如何以及为什么要这样做。
最佳答案
让我们看一下如何将 0.625
的十进制值转换为二进制。
第 1 步:从小数开始乘以 2。结果的整数部分是小数点右边的第一个二进制数字。
Because .625 x 2 = 1.25, the first binary digit to the right of the point is a 1.
So far, we have .625 = .1??? . . . (base 2) .
第 2 步: 接下来我们忽略先前结果的整数部分(在本例中为 1)并再次乘以 2。这个新结果的整数部分是小点右边的第二个二进制数字。我们将继续这个过程,直到我们得到一个零作为小数部分,或者直到我们识别出一个无限重复的模式。
Because .25 x 2 = 0.50, the second binary digit to the right of the point is a 0.
So far, we have .625 = .10?? . . . (base 2) .
第 3 步:忽略之前结果的整数部分(这个结果是 .50,所以在这种情况下实际上没有整数部分可以忽略),我们再次乘以 2。结果的整数部分现在是该点右侧的下一个二进制数字。
Because .50 x 2 = 1.00, the third binary digit to the right of the point is a 1.
So now we have .625 = .101?? . . . (base 2) .
第 4 步:事实上,我们不需要第 4 步。我们在第 3 步中完成了,因为我们在那里将 0 作为结果的小数部分。
Hence the representation of .625 = .101 (base 2) .
小数的 1/10 转换为无限的二进制小数。
在您的问题中,您说十进制的 1/10
等于二进制的 1/1010
。 .1 (1/10)
十进制实际上等于 0.00011001100110011... 二进制。
关于algorithm - 如何将分数转换为二进制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26813782/
我是一名优秀的程序员,十分优秀!