負數(shù)表示負數(shù)絕對值的二進制的反碼加一
按位非 (~)
~num ---> 返回num的反碼 本質(zhì):操作數(shù)的負值減1佩憾,但是按位非實在數(shù)值表示的最底層執(zhí)行操作的举庶,所以運行速度會更快
按位與 (&)
num1 & num2 ----> num1和num2數(shù)值的二進制的每一位對齊混狠,當兩個數(shù)值同為1時返回1,有0時返回0
按位
num1 | num2 --->num1和num2數(shù)值的二進制的每一位對齊幼苛,當兩個數(shù)值有一個為1時超全,返回1赌厅,兩個都為0時返回0
按位異或 (^)
num1 ^ num2 ---> num1和num2數(shù)值對應為上只有一個1時返回穷绵,如果兩個同為1或者0返回0 特點:a兩次異或同一個數(shù)返回a (a = a ^ b ^ b 返回a)
用途:
- 能實現(xiàn)兩個值得交換,不必使用臨時變量
例如交換兩個整數(shù)a=10100001特愿,b=00000110的值仲墨,可通過下列語句實現(xiàn):
a = a^b; //a=10100111
b = b^a揍障; //b=10100001
a = a^b目养; //a=00000110 - 快速判斷兩個值是否相等
判斷兩個整數(shù)a,b是否相等毒嫡,則可通過下列語句實現(xiàn):
return ((a ^ b) == 0)
左移 (<<)
num << 5 ---> 這個操作符會將數(shù)值的所有位向左移動指定的位數(shù)癌蚁,用0補充,左移不會影響操作數(shù)的符號位,如果將 -2 << 5 得到 -64
有符號右移 (>>)
num >> 5 ----> 這個操作符會將數(shù)值向右移動努释,但保留符號位碘梢,用符號位填充空位
無符號位右移 (>>>)
num >>> 5 ----> 讓數(shù)值包括符號位會向右移動,正數(shù)的無符號右移與有符號右移一致伐蒂。而負數(shù)的無符號位移會先得出二進制碼(負數(shù)的絕對值的二進制碼的反碼)煞躬,再右移用0補充,最后轉(zhuǎn)換成十進制