Java中的位运算与移位运算有哪些

本篇内容介绍了“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中的位运算与移位运算有哪些”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注蜗牛博客网站,小编将为大家输出更多高质量的实用文章!

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    评论

    有免费节点资源,我们会通知你!加入纸飞机订阅群

    ×
    天气预报查看日历分享网页手机扫码留言评论电报频道链接