跳转到主内容
极星编程网:以代码为星,赴技术山海!

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 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 1111 1111 1111 1111 1111 1111 1111 1000>>> 2 0011 1111 1111 1111 1111 1111 1111 1110无符号右移运算符>>>规则:运算结果符号位是1,为负数, 需要减 1,再取反(其他运算也要遵循)

减1-取反--8 >>> 2 = 1073741822 1073741822总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!您可能感兴趣的文章:Java三种移位运算符原理解析Java移位运算符详解实例(小结) Java利用移位运算将int型分解成四个byte型的方法java中关于移位运算符的demo与总结(推荐) Java中的位运算符、移位运算详细介绍java中的移位运算符心得总结

相关文章