JavaScript中十进制与二进制互相转换

1,537 阅读3分钟

前言

Javascript中数据进制转换用的不多,但每次用到的时候都得查资料理解转换规则,即使了解了过一段时间脑子还是容易忘记,决定养成习惯,看一遍然后在写一遍,加深印象!

十进制转二进制

正整数转换

转换规则:正整数除以2取余,然后用商不断的除以2取余,直到商等于1(对应取余为1),再把每一步的余数倒序排列,即为转换的二进制

数字10为例

10/2 = 5 余数为: 0

5 /2 = 2 余数为: 1

2 /2 = 1 余数为: 0

1 /2 余数为: 1

按照倒序排列应为:1010

数字42

42 /2 = 21 余数为:0

21 /2 = 10 余数为:1

10 /2 = 5 余数为:0

5 /2 = 2 余数为: 1

2 /2 = 1 余数为:0

1 /2 余数为:1

按照倒序排列为:101010

负整数转换

转换规则:先将对应的正数转换为二进制,然后对二进制取反(1变0,0变1),最后对结果加1

数字-10为例

第一步:10的二进制为1010,高位补0之后64位计算机中就是

00000000 00000000 00000000 00000000 00000000 00000000 00000000 00001010

第二步:取反,结果为

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11110101

第三步:加1,结果为(如果相加结果为2则进一位,从右向左类推)

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11110110

小数转换

整数为0的转换

转换规则:对小数点后面的数乘以2,得到一个小数,然后取小数的整数(0或者1),再把小数点后面的数乘以2,以此类推,直到小数部分为0或者达到位数(超过位数就可能出现精度丢失),最后把取到的整数部分(0或1)正序排序

以0.125为例

0.125 * 2 = 0.25 取整数:0

0.25 * 2 = 0.5 取整数:0

0.5 * 2 = 1.0 取整数: 1

正序排序结果为:001

最终二进制则为:0.001

整数大于0的转换

转换规则:整数部分和小数部分单独转换,然后把两部分转换的值组合即可

以6.125为例

第一步:整数部分6转换为二进制为:110

第二步:小数0.125转为为二进制为:0.001

第三步:组合成二进制则为:110.001

二进制转十进制

整数转换

转换规则:首先将二进制数补齐位数(8位为例),如果首位是0,则代表正整数,为1则代表负整数(为1时,则把二进制取反),然后按照从右到左的计算规则转化为二进制

1010为例

第一步:先补位 00001010

第二步:按照规则计算结果为10

微信图片_20230204210024.png

11101011为例

第一步:首位为1,则为负数,取反为00010100

第二步:按照规则计算结果为20,最终结果为-10

微信图片_20230204210106.png

小数转换

转换规则:先将整数部分换位为十进制(与上面类似),然后再将小数部分按照一定规则转换,最后把两者的结果组合

101.1101为例

第一步:整数部分101转换为十进制为:5

第二步:小数部分0.1101转换规则如下

微信图片_20230204212857.png

第三步:结果相加为:5.8125