java运算符:按位运算符教程
java运算符:按位运算符教程
&:按位与
|:按位或
^:按位异或(相同为0,不同为1)
<<:左移运算符
>>:右移运算符
>>>:无符号右移运算符
eg:5&9
5:0101
9:1001
结果:1:0001
5|9
结果:13:1101
5^9
结果:12:1100
~-5
-5:负数在计算机中以补码形式存在
原码:1000_0000_0000_0000_0000_0000_0000_0101
反码:1111_1111_1111 _1111_1111_1111_1111_1010
补码:1111_1111_1111 _1111_1111_1111_1111_1011
结果:4:0000_0000_ 0000 _0000_0000_0000_0000_0100
5<<2
原码:0000_0000_0000_0000_0000_0000_0000_0101
结果:20:0000_0000_0000_0000_0000_0000_0001_0100
-5<<2
补码:1111_1111_1111 _1111_1111_1111_1111_1011
左移两位补码:1111_1111_1111 _1111_1111_1111_1110_1100
反码:1000_0000_ 0000 _0000_0000_0000_0001_0011
原码:20:1000_0000_ 0000 _0000_0000_0000_0001_0100
结果:20
-5>>2
补码:1111_1111_1111 _1111_1111_1111_1111_1011
右移后补码(左边补符号位):1111_1111_1111 _1111_1111_1111_1111_1110
反码:1000_0000_ 0000 _0000_0000_0000_0000_0001
原码:-2:1000_0000_ 0000 _0000_0000_0000_0000_0010
无符号右移
-5>>>2
补码:1111_1111_1111 _1111_1111_1111_1111_1011
右移后补码(左边补0):2的30次方-2
0011_1111_1111 _1111_1111_1111_1111_1110
如果是正数就不用再转反码、补码。直接就转10进制数即可。
扩展后的赋值运算符
注意其运行机制与普通运算符是存在一定差异的
eg:
byte a = 5;
a = a + 5;// 出错,由于类型自动提升,a+5为int值,赋值给byte出错。
byte b = 5;
b += 5;// 正确,并推荐
本文来源 我爱IT技术网 http://www.52ij.com/jishu/4999.html 转载请保留链接。
- 评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
-
