多平台统一管理软件接口,如何实现多平台统一管理软件接口
697
2022-09-07
Java 中的位运算与移位运算详解
目录位运算按位“与” &按位“或” |异或 ^移位运算左移 <<右移 >>无符号右移 >>>总结
位运算
按位“与” &
规则: 如果两个相应的二进制形式的对应的位数都为 1,则结果为 1;否则为 0;
4 & 5
4
0000 0100
5
0000 0101
按位与运算
&
4 & 5 = 4
0000 0100
1 * 2^2 = 4
-4 & 5
-4
1111 1100
5
0000 0101
按位与运算
&
规则:运算结果符号位是1,为负数, 需要减 1,再取反(其他运算也要遵循)
-4 & 5 = 4
0000 0100
1 * 2^2 = -4
1.正数直接取二进制运算
2.负数取反加一得补码再运算,得到的结果符号位为 0,不需要做任何操作直接给出结果
按位“或” |
规则: 有 1 为 1;否则为 0;
4 | 5
4
0000 0100
5
0000 0101
按位或运算
|
4 | 5 = 5
0000 0101
1 * 2^0 + 1 * 2^2 = 5
-4 | 5
-4
1111 1100
5
0000 0101
按位或运算
|
规则:运算结果符号位是1,为负数, 需要减 1,再取反(其他运算也要遵循)
-4 | 5 =
1111 1101
减1
1111 1100
取反
-0000 0011
-4 | 5 = -3
1 * 2^0 + 1 * 2^1 = -3
异或 ^
规则: 相同为 0;不同为 1;
4 ^ 5
http:// 4
0000 0100
5
0000 0101
按位异或运算
^
4 ^ 5 = 1
0000 0001
1 * 2^0 = 1
-4 ^ 5
-4
1111 1100
5
0000 0101
按位异或运算
^
规则:运算结果符号位是1,为负数, 需要减 1,再取反(其他运算也要遵循)
-4 ^ 5 =
1111 1001
减1
1111 1000
取反
-0000 0111
-4 ^ 5 = -7
1 * 2^0 + 1 * 2^1 + 1 * 2^2 = -7
移位运算
左移 <<
规则: 右边空出的位用 0 填补高位,左移溢出则舍弃该高位。
8 << 2
8
0000 1000
<< 2
0010 0000
左移运算符
<<
结果
8 << 2 = 32
1 * 2^5 = 32
-8 << 2
-8
1111 1000
<< 2
1110 0000
左移运算
<<
规则:运算结果符号位是1,为负数, 需要减 1,再取反(其他运算也要遵循)
减1
1101 1111
取反
-0010 0000
-8 << 2 = -32
1 * 2^5 = -32
右移 >>
规则: 左边空出的位正数用 0 负数 1 填补,右移溢出则舍弃该低位。
8 >> 2
8
0000 1000
>> 2
0000 0010
左移运算符
>>
结果
8 >> 2 = 2
1 * 2^1 = 2
-8 >> 2
-8
1111 1000
>> 2
1111 1110
左移运算
>>
规则:运算结果符号位是1,为负数, 需要减 1,再取反(其他运算也要遵循)
减1
1111 1101
取反
-0000 0010
-8 >> 2 = -2
1 * 2^1 = -2
无符号右移 >>>
规则: 正数与右移规则一样;负数无符号右移,在高位补 0
8 >>> 2
8
0000 1000
>> 2
0000 0010
无符号右移运算符
>>>
结果
8 >>> 2 = 2
1 * 2^1 = 2
-8 >>> 2
-8
http://
1111 1111 1111 1111 1111 1111 1111 1000
>>> 2
0011 1111 1111 1111 1111 1111 1111 1110
无符号右移运算符
>>>
规则:运算结果符号位是1,为负数, 需要减 1,再取反(其他运算也要遵循)
减1
-
取反
-
-8 >>> 2 = 1073741822
1073741822
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~