與運算: 相同位置的兩個數都為1則為1,若有一個不為1,則為0.
00101 & 11100 –00100
int data = 100; System.out.結果是: data–>1100100 64–>1000000 & result–>1000000或運算: 相同位置有一個或多個1則為1,若都為0則為0
00101 | 11100 11101
異或運算: 相同位置上的值不相同則為1,相同則為0
00101 ^ 11100 11001
取反運算: 把內存中的0和1全部取反 無符號:得到的值就是它與類型上界的差 實例 data—>1100100 64—->1000000 ~data—->11111111111111111111111110011011 ~data的十進制—–>-101
左移運算: a shl b 表示把a轉換為二進制后左移b位(在后面添b個0) 例如 100的二進制表示為1100100,而110010000表示400,所以100 shl 2=400 所以 a shl b 實際上是a乘以2的b次方
右移運算: a shr b 表示a的二進制右移b位(去掉末尾b位),相當于a除以2的b次方(取整)
用shl 或 shr 要比直接用乘除運算塊的多,因為后者是更接近底層的操作。
新聞熱點
疑難解答