Javascript 补位运算符

看到一个题目~~3.14得到是3,一下子有点蒙,之前在Javascript中完全没有见过~这个运算符。经查才知道~是补位运算符,但是跟原码反码补码又有点不同(在反码这一块,不记正负),好吧,大学的东西都还给老师了。

 

举个简单点的例子吧。~2 = -3,看看怎么得出这个结果的:

 

2的二进制是:

0000 0010

将它简单翻转:

1111 1101

 

接下我们看看怎么得出 -3。先给出3的二进制:

0000 0011

翻转:

1111 1100

加1:

1111 1101

 

因此,运算符~只是翻转所有比特位,再由机器来解析结果。

 

PS. 有个更便捷的方式来计算: ~n = -n-1

原文地址:https://www.cnblogs.com/Kingle/p/3714945.html