位运算符的计算

位运算符学习

一、二进制中的源码、反码、补码

  1. 符号
  • 有符号数

用最高位的0和1表示正数和负数,比如0000000111111100最 高位是0,所以该数字为正数。

  • 无符号数

全部二进制均代表数值。

  • 有符号数的性质

    • 二进制的最高位是符号位:0表示正数,1表示负数。
    • 正数的原码、反码、补码都一样
    • 负数的反码=它的原码符号位不变,其他位取反(0变1,1变0)
    • 负数的补码=它的反码+1
    • 0的反码、补码都是0
    • 在计算机运算的时候,都是以补码的方式来运算的。

二、java中的位运算符

  • & 位运算与

    1. 先转化为二进制,然后相同位数比较。

    2. 两位都为1 ,结果为1。

  • | 或运算符

    1. 先转化为二进制,然后相同位数比较。

    2. 只要有一个为1 ,结果为1。

  • ^ 异或运算符

    1. 先转化为二进制,然后相同位数比较。

    2. 两位数不相同 ,结果为1。

  • << 左移符 2<<2

    1. 先转化2为二进制。10

    2. 左移2为,后面补0,变为1000.十进制为8.

    3. 当左移的位数大于等于32的时候,要先对32求余,再根据余数左移。比如左移32,就和左移0位相同。

  • >>右移符

    1. 正数参考上边

    2. 负数如下图:

  • >>> 无符号右移

​ 1.无脑右移就可以,不用管符号。

posted @ 2024-03-17 21:53  pengguoping  阅读(2)  评论(0编辑  收藏  举报