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

时间:2011-02-13 21:57:39

标签: binary

1/10(decimal) = 0.0001100110011... (binary)

我该怎么做?我应该转换为二进制然后分裂?有人能告诉我吗?

5 个答案:

答案 0 :(得分:85)

在大学里,我这样学习:

  1. 乘以两个
  2. 将十进制数字作为数字
  3. 将分数作为下一步的起点
  4. 重复,直到您获得0或定期数字
  5. 从顶部开始读取数字 - 第一个结果是逗号后面的第一个数字
  6. 示例:

    0.1 * 2 = 0.2 -> 0
    0.2 * 2 = 0.4 -> 0
    0.4 * 2 = 0.8 -> 0
    0.8 * 2 = 1.6 -> 1
    0.6 * 2 = 1.2 -> 1
    0.2 * 2 = 0.4 -> 0
    0.4 * 2 = 0.8 -> 0
    0.8 * 2 = 1.6 -> 1
    0.6 * 2 = 1.2 -> 1
    Result: 0.00011(0011) periodic.
    

答案 1 :(得分:21)

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


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

答案 2 :(得分:15)

这可能有些令人困惑,但二进制的小数位数表示2的幂的倒数(例如,1 / 2,1 / 4,1 / 8,1 / 16,第一,第二,第三和第四)小数位,分别为十进制小数,十进制位表示连续十次幂的倒数。

要回答你的问题,你需要弄清楚需要加入两个幂的倒数才能加起来达到1/10。例如:

1/16 + 1/32 = 0.09375,非常接近1/10。添加1/64会使我们结束,1/128也是如此。但是,1/256使我们更接近。所以:

0.00011001二进制= 0.09765625十进制,接近你的要求。

您可以继续添加越来越多的数字,因此答案将为0.00011001 ...

答案 3 :(得分:8)

以下是如何考虑该方法。

每次乘以2,就会将数字的二进制表示移动到1位。您已将该点后的最高位移到1s位置,因此取下该位数,它是您的分数的第一个(最高,因此最左边)数字。再做一次,你就有了下一个数字。

通过除以并将余数作为下一个数字来转换整数的基数将数字向右移动。这就是为什么你得到相反顺序的数字,最低的数字。

GoofyBall所指出的那样,这显然可以推广到任何基数,而不仅仅是2。

要考虑的另一件事:如果你要四舍五入到N位数,请停在N + 1位数。如果数字#N + 1是1,则需要向上舍入(因为二进制数字只能是0或1,截断下一个数字1与截断5的十进制数一样不准确。)

答案 4 :(得分:6)

我花了一些时间来理解@Femaref(' s)的回答,以为我会详细说明。

<强> Elboration

您想将等于1/10的十进制0.1转换为二进制。以0.1作为输入开始,然后按以下步骤操作:

  1. 将输入乘以2(多列)
  2. 从答案(答案栏)中取小数作为数字(二进制​​栏)
  3. 将分数(分数列)作为下一步的输入
  4. 重复步骤1,2和3,直到获得0或周期性数字。在这种情况下,周期性数字的开始显示在最后一列,所以我们可以在那里停止。但我继续表明重复的清晰度。
  5. 答案是从顶部开始的二进制列中取得的数字。
  6. 在这种情况下,它是:

    0.00011(0011) Note: numbers within parenthesis will keep repeating (periodic)
    
    +-------+-------+--------+---------+----------+--------+----------------------+
    | input | mult  | answer | decimal | fraction | binary |                      |
    +-------+-------+--------+---------+----------+--------+----------------------+
    |   0.1 |  2    |    0.2 |    0    |     .2   |      0 |                      |
    |   0.2 |  2    |    0.4 |    0    |     .4   |      0 |                      |
    |   0.4 |  2    |    0.8 |    0    |     .8   |      0 |                      |
    |   0.8 |  2    |    1.6 |    1    |     .6   |      1 |                      |
    |   0.6 |  2    |    1.2 |    1    |     .2   |      1 |                      |
    |   0.2 |  2    |    0.4 |    0    |     .4   |      0 |                      |
    |   0.4 |  2    |    0.8 |    0    |     .8   |      0 |                      |
    |   0.8 |  2    |    1.6 |    1    |     .6   |      1 |                      |
    |   0.6 |  2    |    1.2 |    1    |     .2   |      1 | < Repeats after this |
    |   0.2 |  2    |    0.4 |    0    |     .4   |      0 |                      |
    |   0.4 |  2    |    0.8 |    0    |     .8   |      0 |                      |
    |   0.8 |  2    |    1.6 |    1    |     .6   |      1 |                      |
    |   0.6 |  2    |    1.2 |    1    |     .2   |      1 |                      |
    +-------+-------+--------+---------+----------+--------+----------------------+