我知道如何将浮点数转换为二进制按照这个问题如何将浮点数转换为二进制?
但是为什么会这样呢? 0.625 × 2 得到 1.25,1.25 是一个以 10 为底数的数。为什么我们可以使用以 10 为基数的整数部分转换为二进制?
使用清晰的术语很有帮助:1.25 是一个数字,一个抽象的数学实体。四分之五和 1/4 是同一个数字。 “1.25”是一个数字,代表数字的一系列文本或文字。
当我们将 0.625 乘以 2,得到 1.25,取 1 作为二进制数字,并继续使用 0.25 时,我们正在使用 numbers,但我们使用 numerals 作为工具。 如果我将 0.625 转换为其他数字系统并乘以 2,我会在其他数字系统中得到 1.25。我们关心的是算术及其产生的值,而不是使用的特定数字系统。
例如,以 60 为基数,0.62510 为 (0).(37)(30)60。我不得不使用括号来表示 60 进制数字。 “0”后跟一个“.”数字 37 和数字 30 是以 60 为基数表示 0.625 的数字。如果我将其乘以 2,则 (30) 变为 (00) 并进位,(37) 变为 (74) 并添加进位(75) 变成 (15) 和进位,所以结果是 (1).(15)60。这等于 1¼。所以我们可以使用任何我们喜欢的基数转换为二进制。
根据位置表示法的定义,二进制数字 djdj−1dj−2…d2d1 d0.d−1d−2…代表数字
dj•2j + dj−1•2j−1 + dj−2•2 j−2 + … + d2•22 + d1•21 + d0•20 + d− 1•2−1 + d−2•2−2…
使用 0.625,我们可以看到数字 djdj−1dj−2…d2d1 d0 全部为零。所以我们想要找到 d−1 及其后面的任何数字。
我们可以写成 0.625 = d−1•2−1 + d−2•2−2 + d−3•2−3…
然后两边乘以 2: 1.25 = d−1•20 + d−2•2−1 + d−3•2−2 …(注意指数增加)。
通过研究几何级数我们知道,项 d−2•2−1 + d−3•2−2… 之和小于一(假设数字不全是的)。因此,为了使总和等于 1.25,d−1 必须为 1。我们得到了第一个数字。
然后我们可以写成 1.25 = 1•20 + d−2•2−1 + d−3•2−2…
所以 0.25 = d−2•2−1 + d−3•2−2…
现在再次乘以 2: 0.5 = d−2•20 + d−3•2−1…
现在 d−2 必须为 0,否则总和将大于 0.5。这是我们的第二个数字。
那么我们有 0.5 = 0•20 + d−3•2−1…
且 0.5 = d−3•2−1…
再乘以 2 得到 1 = d−3•20…
现在我们看到 d−3 是 1,所有尾随数字都是 0。
所以 0.62510 = 0.1012。