Binary 如何将分数转换成二进制?

Binary 如何将分数转换成二进制?,binary,Binary,1/10(十进制)=0.000110011。。。(二进制) 我该怎么做?我应该转换成二进制然后除法吗?有人能告诉我吗?这可能有点让人困惑,但二进制中的十进制位置表示两次幂的倒数(例如,第一、第二、第三和第四个小数位分别为1/2、1/4、1/8、1/16),就像在十进制中,小数位表示十的连续幂的倒数一样 要回答你的问题,你需要计算出两个幂的倒数加起来是1/10。例如: 1/16+1/32=0.09375,非常接近1/10。加上1/64,我们就完蛋了,1/128也完蛋了。但是,1/256让我们更接近

1/10(十进制)=0.000110011。。。(二进制)


我该怎么做?我应该转换成二进制然后除法吗?有人能告诉我吗?

这可能有点让人困惑,但二进制中的十进制位置表示两次幂的倒数(例如,第一、第二、第三和第四个小数位分别为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…

在大学里,我是这样学的:

  • 乘二
  • 以十进制为数字
  • 将分数作为下一步的起点
  • 重复此操作,直到达到0或周期数
  • 从顶部开始读取数字-第一个结果是逗号后的第一个数字
  • 例如:

    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
    下面是如何思考的方法

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

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

    这显然可以推广到任何基,而不仅仅是2,正如


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

    我花了一段时间才理解@Femaref('s)的答案,所以我想我会详细说明

    Elboration

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

  • 将输入乘以2(多列)
  • 从答案(答案列)中取小数作为数字(二进制列)
  • 将分数(分数列)作为下一步的输入
  • 重复步骤1、2和3,直到达到0或周期数。在这种情况下,周期数的开始显示在最后一列中,因此我们可以在这里停止。但为了清晰起见,我继续重复
  • 答案是从顶部开始的二进制列中获取的数字
  • 在这种情况下,它是:

    0.00011(0011) Note: numbers within parenthesis will keep repeating (periodic)
    

    +-------+-------+--------+---------+----------+--------+----------------------+
    |输入|多|答案|十进制|分数|二进制||
    +-------+-------+--------+---------+----------+--------+----------------------+
    |   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 |<在此之后重复|
    |   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 |                      |
    +-------+-------+--------+---------+----------+--------+----------------------+
    
    你能详细解释一下“二进制”是什么意思吗?“转换成二进制”真的没有意义。你想把除法运算的结果转换成浮点数吗?@Michael Petrotta-我想他指的是如何将基数2中的分数表示为一个(可能重复的)十进制数。从上一行你从哪里得到
    0.1
    0.2
    0.4
    0.8
    0.6
    ,等等,这是结果。第一行接受输入(在本例中为0.1)。只要按照说明去做就行了。答案说明了为什么这个答案很好。您可能有兴趣知道,此方法不仅限于转换为二进制,还适用于其他基数(八进制和十六进制)。下面是一个将0.1转换为八进制的示例:0.1*8=0.8->0.8*8=6.4->6 0.4*8=3.2->3 0.2*8=1.6->1这是该算法的Python实现。长除法实际上显示了接受答案中的算法工作的原因。非常好。如果没有这个解释,费马雷夫的回答似乎很神奇。
    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 |                      |
    +-------+-------+--------+---------+----------+--------+----------------------+