请问类似23.111这样的怎么转换成二进制

来源:4-2 进制运算的基础

qq_飞越_0

2022-05-22

如题所述

写回答

2回答

陶丽丹

2022-07-26

整数部分:23=16+4+2+1,转成二进制就是10111;

小数部分:0.111很难转成二进制小数,其实很多十进制小数是无法轻易转成二进制小数。一个十进制小数如果要转成二进制小数,就需要写成a/2^n形式,n就是转成二进制小数之后,小数点后有多少位,将整数a写成二进制数字,如果它不足n位就要在前面添加0补成n位,比如说0.03125=1/32,写成二进制就是0.00001,你可以用乘二法验证一下。0.111*256=28.416,0.416*256=106.496,0.496*256=126.976,也就是说至少到2的24次方还是没能将小数部分转成整数,我大致算了下,再乘5次256也还是没能把0.111转成整数,也就是说如果能够转成二进制,也已经超出了64位。大兄弟,我已经不想帮你算了,哪怕算出来,可能也已经超出了计算机能使用的位数。

1
0

yuexiaqingmiao

2022-05-25

/** 输入十进制小数转二进制小数 */
function conversion(num) {
    let res = '0.';
    let n = num * 2;
    while(n !== 1) {
        if(n > 1) {
            res += 1;
            n = n - 1;
        } else {
            res += 0;
        }
        n = n * 2;
    }
    res += 1;
    return res;
}
console.log(conversion(0.1));

// 0.0001100110011001100110011001100110011001100110011001101 -- 本地代码运行后的结果
// 0.00011001100110011001 -- 网上在线转换的结果

方法还是乘以2,只不过手动算,太麻烦了。while循环的终止条件感觉可以换成一个精度位数。用的js实现的一个算法

0
0

(新版)计算机基础,计算机组成原理+操作系统+网络

编程之前先学这门课,系统补足计算机基础知识,夯实编程地基

7739 学习 · 1580 问题

查看课程