~是按位取反運算,~~是取反兩次。
~~的作用是去掉小數部分,因為位運算的操作值要求是整數,其結果也是整數,所以經過位運算的都會自動變成整數。
例如:
按位取反
如 unsigned char a=1;
二進位制為 00000001
a=~a;
現在二進位制為11111110
擴充套件資料:
注意事項
~對運算元按位取反,兩個的意思即作兩次取反操作,其實是等作原數本身(運算元是32整數範圍內)
~~(Math.random()*7)
即:
var n = Math.random() * 7;
n = ~n;
n = ~n;//其實和初始值一樣
和對BOOLEAN型別的作兩次,操作是一個意思,只不過是把小數位給去掉了。
推薦用>>運算子,一次即可:
var n = Math.random() * 7;n = n>>0;
~是按位取反運算,~~是取反兩次。
~~的作用是去掉小數部分,因為位運算的操作值要求是整數,其結果也是整數,所以經過位運算的都會自動變成整數。
例如:
按位取反
如 unsigned char a=1;
二進位制為 00000001
a=~a;
現在二進位制為11111110
擴充套件資料:
注意事項
~對運算元按位取反,兩個的意思即作兩次取反操作,其實是等作原數本身(運算元是32整數範圍內)
~~(Math.random()*7)
即:
var n = Math.random() * 7;
n = ~n;
n = ~n;//其實和初始值一樣
和對BOOLEAN型別的作兩次,操作是一個意思,只不過是把小數位給去掉了。
推薦用>>運算子,一次即可:
var n = Math.random() * 7;n = n>>0;