与,或,非,异或,左移,右移,位运算符号总结
在Java中,所有數據的表示方法都是以補碼的形式表示,如果沒有特殊說明,Java中的數據類型默認是int,int數據類型的長度是8位,一位是四個字節,就是32字節,32bit.
一:與運算符(&)
運算規則:
0&0=0;0&1=0;1&0=0;1&1=1
即:兩個同時為1,結果為1,否則為0
例如:5&7
十進制5轉為二進制的5:0000 0101
十進制7轉為二進制的7:0000 0111
結果:0000 0101 ->轉為十進制:5
即:5&7 = 5
二:或運算(|)
運算規則:
0|0=0; 0|1=1; 1|0=1; 1|1=1;
即 :參加運算的兩個對象,一個為1,其值為1。
例如:5|7 即 0000 0101 | 0000 0111 = 0000 0111,因此,5|7=7。
三:異或運算符(^)
運算規則可以簡單理解為相加后不進位
運算規則:0^0=0; 0^1=1; 1^0=1; 1^1=0;
即:參加運算的兩個對象,如果兩個位為“異”(值不同),則該位結果為1,否則為0。
例如:5^7 = 0000 0101 ^ 0000 0111 =0000 0010,因此,5^7 = 7
性質:
1.N^0=N
2.N^N=0
3.同一批數,通過交換律結合律,最后異或出來是同一個數
四:左移(<<)
運算規則:二進制位向左移動相應位數,高處越位丟棄,低位補0;
如:5<<2,5=00000101,5<<2=00010100=20,即5 * 2?
公式:m<<n=m* 2?
五:右移(>>)
運算規則:二進制位向右移動相應位數,低位丟棄,高位補0;
如:5>>2,5=00000101,5>>2=00000001=1,即5/(2?)向左取整
公式:m>>n=m/2?
>>>:無符號右移(注意:沒有無符號左移)
無符號右移(注意:沒有無符號左移)
正數做>>>運算的時候和>>是一樣的。區別在于負數運算
六:非運算符(~)
運算規則:如果位為0,結果是1,如果位為1,結果是0.
在Java中,所有數據的表示方法都是以補碼的形式表示
如:~37
8轉為二進制是100101.
補碼后為: 00000000 00000000 00000000 00100101
取反為: 11111111 11111111 11111111 11011010
因為高位是1,所以原碼為負數,負數的補碼是其絕對值的原碼取反,末尾再加1。
因此,我們可將這個二進制數的補碼進行還原: 首先,末尾減1得反碼:11111111 11111111 11111111 11011001 其次,將各位取反得原碼:
00000000 00000000 00000000 00100110,此時二進制轉原碼為38
所以~37 = -38.
進制轉換工具
加運算的兩個對象,按二進制位進行運算。
進制轉換地址:http://tool.oschina.net/hexconvert/
總結
以上是生活随笔為你收集整理的与,或,非,异或,左移,右移,位运算符号总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求近似数最值_求近似数的方法
- 下一篇: 大学一定要拿计算机证书吗,大学期间,一定