Kingle
你所有不曾料想过的问题,都会随着时间的推移而与你不期而遇

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

 

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

 

2的二进制是:

0000 0010

将它简单翻转:

1111 1101

 

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

0000 0011

翻转:

1111 1100

加1:

1111 1101

 

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

 

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

posted on 2014-05-07 22:42  Kingle  阅读(689)  评论(0编辑  收藏  举报