parseInt的计算原理

在网上很容易查到parseInt() 的定义,如下

 parseInt() 函数可解析一个字符串,并返回一个整数。
 parseInt(string, radix)
 string	:必需。要被解析的字符串。
 radix	:可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。如果省略该参数或其值为 0,
 则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。
 如果该参数小于 2 或   者大于 36 ,则 parseInt() 将返回 NaN。

看了下列的例子,但是不明白为什么会是这样的结果

	parseInt("11",2);		//返回 3 (2+1)

看了进制的转化后才明白

	二进制数据一般可写为:规律:个位上的数字的次数是0,十位上的数字的次数是1,......,
	依次递增,而十分位的数字的次数是-1,百分位上数字的次数是-2,......,依次递减。 

把 11 看成两个数1 和1,因为1都小于基数2
所以结果:
1 * 21 +1 * 20 =2+1=3
如果是parseInt(“113”,2); 运行的结果也是3
因为3这个数大于2不属于2进制的数
所以 只运算前两位
1 * 21 +1 * 20 =2+1=3

	 如果是parseInt("311",2);	运行的结果NAN

因为第一个数3不是2进制数,所以不往后计算,
也就是说从第一个是2进制数的数开始到碰到第一个不是2进制数截止。

		如果是parseInt("131",2);	运行的结果2

因为1 * 20 =1。

		如果是parseInt("1113",2);	运行的结果  7

1 * 22 + 1 * 21+1 * 20 =4+2+1=7

其他进制都是这样计算。

	如果是parseInt("1213",3) 运行的结果13

只计算是3进制的数,大于等于3基数的都不计算
1 * 32 + 2* 31+1 * 30 =9+6+1=16

写下来给自己做个笔记以免以后自己忘记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值