请问类似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位。大兄弟,我已经不想帮你算了,哪怕算出来,可能也已经超出了计算机能使用的位数。
TRANSLATE with xEnglishTRANSLATE withEnable collaborative features and customize widget: Bing Webmaster Portal10 -
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实现的一个算法
00
相似问题