前言
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
11101011为例
第一步:首位为1,则为负数,取反为00010100
第二步:按照规则计算结果为20,最终结果为-10
小数转换
转换规则:先将整数部分换位为十进制(与上面类似),然后再将小数部分按照一定规则转换,最后把两者的结果组合
101.1101为例
第一步:整数部分101转换为十进制为:5
第二步:小数部分0.1101转换规则如下
第三步:结果相加为:5.8125