邏輯位運算符&、|、^和~文章鏈接
http://c.biancheng.net/view/5469.html
原文 ~ 運算符在文章中的配圖有誤(截止2020-2-7)
位非運算實際上就是對數字進行取負運算,再減 1
~5=-6
(計算方式大致如下)
5在計算機中的值:0000 0101(正數的原、反、補是一樣的)
取反後:1 1111 1010(這是一個負數,反碼=補碼+1)
補碼:1 1111 0101(那麼補碼=反碼-1)
原碼:1 0000 1010(十進制爲-6)
~~它代表雙非按位取反運算符,如果你想使用比Math.floor()更快的方法,那就是它了。需要注意,對於正數,它向下取整;對於負數,向上取整;非數字取值爲0,它具體的表現形式爲:
~~null; // => 0
~~undefined; // => 0
~~Infinity; // => 0
--NaN; // => 0
~~0; // => 0
~~{}; // => 0
~~[]; // => 0
~~(1/0); // => 0
~~false; // => 0
~~true; // => 1
~~1.9; // => 1
~~-1.9; // => -1
移位運算符(<<、>>和>>>)
http://c.biancheng.net/view/5471.html