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

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

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

在大学里我是这样学的:

  1. 乘以二
  2. 以小数为数字
  3. 把分数作为下一步的起点
  4. 重复,直到你得到0或周期性的数字
  5. 从顶部开始读取数字 – 第一个结果是逗号后的第一个数字

例:

 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 1
 - (dec)= ----(bin)
 10 1010


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

这可能有点令人困惑,但二进制的小数位数将表示两个幂的倒数(例如,对于第一,第二,第三和第四小数位的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 …

这里是如何思考的方法。

每次你乘以2,你正在移动数字的左边1位的二进制表示。 你已经将点后的最高位移到了1的位置,所以取下这个数字,这是你的分数的第一个(最高的,因此是最左边的)数字。 再次这样做,你有下一个数字。

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

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

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

花了我一会儿才明白@Femaref('s)的答案,所以想我会详细说明。

Elboration

你想要将等于0.1十进制1/10转换为二进制。 从0.1开始,并按照下列步骤操作:

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

在这种情况下,它是:

 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 | | +-------+-------+--------+---------+----------+--------+----------------------+