位操作~~整数转化

在js中有个小操作用~~把字符串转换整数。

console.log(~~'10');

结果:

转换正常
console.log(~~'50000000000');

结果:

结果是负数

故使用过程中要注意:
1,最好不要是转换浮点数
2,转换的值最好不要大于2^32(4,294,967,295)。因为Bit操作是针对32位有符号整数。如下图:

位操作~~整数转化_第1张图片
Paste_Image.png

如果想知道自己的位数是否大于32可以使用:

num.toString(2).length

可以写个转换的函数了:

const parseInt = num => Number(num).toString(2).length >= 32 ? parseInt(num, 10) : ~~num;
//注意如果传入的是浮点数则会报错

参考地址:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators
(中文版:
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators)

http://www.w3schools.com/jsref/jsref_operators.asp

你可能感兴趣的:(位操作~~整数转化)