【问题标题】:Converting a repeating binary number to decimal将重复的二进制数转换为十进制数
【发布时间】:2019-05-30 14:34:15
【问题描述】:

如何将 0.1011111.... 或 0.10(1) 表示为分数 a/b? a & b 为整数。

我正在尝试这种方法

x = 0.10(1) x = 10.(1) / 4

现在 y = 10.(1)

2y = 101.(1)

这意味着 2y - y = 91 y = 91

x = 91/4 但是 a = 91 & b = 4 是错误的。

我该如何解决这个问题?

【问题讨论】:

    标签: floating-point binary


    【解决方案1】:

    您需要观察数字仍然是二进制的。因此,在十进制中,y 的整数部分是 22y 的整数部分是 5,因此差值是 y=3

    注意二进制0.1(1)=1,就像十进制0.9(9)=1。因此,以另一种方式,x 恰好是 0.11 二进制文件,即1/2+1/4=3/4

    【讨论】:

      【解决方案2】:

      你可以这样做:

      x = (0.1011111)2

      用十进制表示上述二进制项给我们:

      x = 1/21 + 0/22 + 1/23 + 1/24支持> + ... )
      x = 1/2 + 1/22*(1/21 + 1/22 + 1/23 + ... )

      如果我们忽略上式中粗体标记的项,括号中的项变为x,所以我们可以说括号中的项等于(x+1/22)

      x = 1/2 + 1/22*(x+1/22)
      x = 1/2 + x/4 + 1/16

      求解上述方程

      3x/4 = 9/16
      x = 3/4

      【讨论】:

      • 小错误:1/8 应该是1/16。这样,当您解决时,您将得到x=3/4,这与@LutzL 的答案一致。
      【解决方案3】:

      下面是这个问题对重复模式的常见情况的概括。

      假设 x=0.001100110011...,其中模式 0011 无限重复。

      设 a 为模式(x 为 0011),k 为其长度(即 x 为 4)。

      x = a×2^-k+a×2^-2k+...
      = a×2^-k×∑i=0 (2^-k)^i = a×2^-k×limn→∞(1-(2^-k)^n)/(1-2^-k)
      因为 x 是具有 2^k 比率的几何序列的总和。

      当 n 趋于 ∞ 时,(2^-k)^n 趋于零,我们有
      x = a×2^-k/(1-2^-k) = a/(2^k-1)

      如果 x=0.11111..., a=1, k=1 和 x=1/(2-1)=1 并且我们得到 LutzL 已经给出的结果(以更简单的方式!),它回答了原始问题。

      但我们可以用任何重复模式解决更复杂的问题。
      例如,如果 x=0.001100110011...,我们有 a=0011=3 和 k=4。
      因此 x=3/(2^-4-1)=1/5=0.2

      对重复模式前面有非重复序列的情况的概括是立即的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-08
        • 2010-12-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-03-31
        相关资源
        最近更新 更多