如何将分数转换为二进制?

时间:2014-11-08 04:32:49

标签: algorithm

我不知道如何从分数转换为二进制。当我搜索它时,有一个解决方案显示:

    1              1
-- (dec)  =   ---- (bin)
10            1010


       0.000110011...
      -------------
1010 | 1.0000000000
         1010
       ------
         01100
          1010
         -----
          0010000
             1010
            -----
             01100
              1010
             -----
              0010

我不知道如何以及为什么要这样做。

3 个答案:

答案 0 :(得分:3)

让我们看一下将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.0 0011 0011 0011 0011 ...二进制。

答案 1 :(得分:1)

二进制数转换的小数值

  1. 分数值乘以2和      结果有一个小数(1或0)和一个分数值。

  2. 取第1步操作的派系值。

  3. 重复过程,直到分数值达到0。

  4. 从下到上收集小数值

    分数= .125

          = .125 x 2    
          = 0.250 x 2
          = 0.50  x 2
          = 1.0
    

    分数= 0.125 = 100

    结果
      给定分数值(基数10)= 0.125
      到二进制位(基数2)= 0.100

    Real number to binary conversion

答案 2 :(得分:0)

在二进制加权分数中,小数点右边的每个数字是(1/2)(或2的幂的负数)的幂,小于左边的数字。第一个向右数字的权重为1/2,第二个数字为1/4,第三个为1/8,依此类推。

所以0.111(base-2)是:

1*(0.5) + 1*(0.25) + 1*(0.125) = 0.875

0.0101(base-2)是:

0*(0.5) + 1*(0.25) + 0*(0.125) + 1*(0.0625) = 0.3125

它与二进制整数没有什么不同,除非我们向右移动小数点时将其扩展为2的负幂。

我希望至少解决你问题的一部分。