js进制转换

Number的toString()方法可以根据参数进行进制转换,如果不加参数,那么将基于十进制转换。转换的数字带有小数也可以转换,但是不推荐小数进制转换,因为小数进制转换容易因为精度问题造成0.3 - 0.2 != 0.2 - 0.1。

进制转换原理:

1. 十进制转二进制:将十进制的数不断除以2取余直到商为0,例如23

23/2=11~1

11/2=5~1

5/2=2~1

2/2=1~0

1/2=0~1

所以23转为二进制数为10111;

2. 十进制小数转二进制:将小数乘以2然后取整,直到小数部分为0。

例如0.25

0.25 * 2 = 0.5~0

0.5 * 2 = 1~1

所以二进制小数是0.01

例如0.75

0.75 * 2 = 1.5~1

0.5 * 2 = 1~1

所以二进制小数是0.11

3. 二进制转为十进制:将二进制的数每位乘以2的当前位数减1次幂,例如10111.1

10111 = 1 * Math.pow(2 , 4) + 0 * Math.pow(2 , 3) + 1 * Math.pow(2 , 2) + 1 * Math.pow(2 , 1) + 1 * Math.pow(2 , 0) + 1 * Math.pow(2, -1)

          =  1 * 16 + 0 * 8 + 1 * 4 + 1 * 2 + 1 * 1 + 1 * 0.5

          =  23.5

其它进制转换原理等同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值