【问题标题】:Converting decimal with comma to binary用逗号将十进制转换为二进制
【发布时间】:2021-07-02 04:46:33
【问题描述】:

我正在尝试将带逗号的十进制数字转换为二进制。我已经看到,例如,如果您有十进制数字 5.2,您可以将其转换为 101.10,因为 5 是 101,2 是 10,但我看到了一种我不太了解的方法。

例如,数字 93.3125 是 0000 0101 1101 0101。为什么? 还有其他方法可以帮助您将带逗号的小数转换为二进制吗?

【问题讨论】:

    标签: math binary decimal comma


    【解决方案1】:

    您需要分别处理每个部分(小数点前后)。整数部分通过后继除以基数转换,小数部分通过后继乘以基数转换。在你的情况下base = 2

    5.2 dec -> 5 + 0.2 dec
    

    整数部分

    5 % 2 = 1 // binary digit
    5 / 2 = 2 // leftover for next iteration
    
    2 % 2 = 0 // binary digit
    2 / 2 = 1 // leftover for next iteration
    
    1 % 2 = 1 // binary digit
    1 / 2 = 0 // leftover for next iteration
    

    不要忘记数字必须以相反的顺序使用(但是你的 5 是一样的):

    5 dec = 1 0 1 bin
    

    小数部分

    0.2 * 2 = 0.4   
    0.4 * 2 = 0.8   
    0.8 * 2 = 1.6
    0.6 * 2 = 1.2
    0.2 * 2 = 0.4
    ...
    

    一切都是十进制的。结果的整数部分是您的数字(按顺序),小数部分是下一次迭代的剩余部分。所以结果是:

    0.2 dec = 0 . 0 0 1 1 0 ... bin
    

    放在一起:

    5.2 dec = 101.00110... bin
    

    【讨论】:

    • 为什么用 0.2 乘以 2,为什么写成 0.2 * 2 = 1.4 ?我不太明白如何在 bin 中转换 0.2 dec
    • @David 1. 因为5.2 的小数部分(小数点后)是0.2,而2 是您想要转换为二进制数的基础。因此,您只需将数字的小数部分乘以基数 (2) 结果的整数部分是输出的数字,而您以相同的方式再次乘以基数的小数部分...重复此操作,直到您有足够的数字或剩余为零。 2. 0.2*20.4 我忘记删除 1 因为我从上一行复制粘贴它已经修复了它
    • @David 如果您想快速检查,然后在计算器中输入5.2*256,将结果的整数部分转换为二进制,然后输入小数点,以便后面有8 数字.. . 5.2*256 = 1331 dec -> 10100110011 bin -> 5.2 dec = 101.00110011 ... 因为2^8 = 256 如果你想要更多位使用更大的数字,例如1024 = 2^10 ...这称为定点数学
    【解决方案2】:

    有多种方法可以将十进制数转换为由 1 和 0 组成的字符串。您刚刚演示了其中的两个。

    如果您将数字(以 base-10 位表示法表示) 93.3125 转换为“二进制”(以 base-2 位表示法表示) 你会得到 @ 987654322@

    如果您将其转换为计算机语言中使用的二进制浮点格式,您会得到一个由 1 和 0 组成的字符串,可能带有一个前导位表示符号,以及一些其他位表示指数——您需要一个格式描述文档进行解码。

    将“5.2”翻译成“101.10”(分别翻译小数点前后的部分)对我来说是一个新的概念,它不是位置符号的数学正确翻译。 "5"=>"101" 是正确的,但 ".2"=>".10" 是不正确的;十进制中的“.2”是十分之二,也就是五分之一,以二为底的是“.001100110011...”(五分之一是以二为底的重复小数,就像三分之一是以十为底的重复小数一样。)你会如何翻译“1.02”?

    所以是的,有很多方法可以编码二进制数字。不同的代码有不同的用途。

    【讨论】:

    • 我不太明白什么时候给 93.3125 加上逗号。为什么逗号后面是0101?最重要的是,为什么是 .2, 001100110011 ?
    • @David:你了解以二为底的符号吗?你怎么代表一半?或者四分之一,或者八分之一,或者十六分之一,或者2^-n?
    猜你喜欢
    • 2014-06-20
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 2013-01-24
    • 2016-08-28
    相关资源
    最近更新 更多