Java中位逻辑运算符与位移运算符(从原理进行解释)

位逻辑运算符

计算机在运行和存储过程中都是以补码的方式进行的(非常重要!!!),与运算,或运算等都是以补码进行位运算。

运算符含义举例解释结果
&位与运算符4&50000 0100(4的补码,不是源码)&0000 0101(5的补码),对应的位进行与逻辑运算0000 0100(4的补码,其结果与源码相同)-->4
|位或运算符-4|5

-4补码:11111111 11111111 11111111 11111100

5补码:00000000 00000000 00000000 00000101

11111111 11111111 11111111 11111101(此为结果的补码,转换成相应的源码)--->1.......00000011=-3
^位异或逻辑4^50000 0100^0000 0101,对应位置进行异或逻辑运算0000 0001(此为结果的补码)——>源码表示为1
~~4看下面-5

解释:

  1. 4表示为00000000 00000000 00000000 00000100,第一位为符号位,0表示正数,1表示负数。
  2. 4的补码=4的源码,为00000000 00000000 00000000 00000100。
  3. ~4操作,得到的是结果的补码:11111111 11111111 11111111 11111011
  4. 源码为:10000000 00000000 00000000 00000101---->-5

我们再来推导以下~(-2)做练习

  1. 先得到-2源码:10000000 00000000 00000000 00000010
  2. -2得反码:11111111 11111111 11111111 11111101
  3. -2得补码:11111111 11111111 11111111 11111110
  4. ~(-2)操作(得到的是结果的补码):00000000 00000000 00000000 00000001
  5. 结果的源码为:00000000 00000000 00000000 00000001--->1

public class Test {
    public static void main(String [] args){
        System.out.println(4&5);
        System.out.println(-4|5);
        System.out.println(4^5);
        System.out.println(~4);
        System.out.println(~-2);
    }
    }

位移运算符

这里位运算也都是按照补码进行位运算

运算符作用举例解释结果
>>右移位运算,负数补充1,正数补充08>>18右移1位(1000)——01004
-8>>4-8右移四位-1
<<左移位运算9<<29左移两位(0000 1001)——0010 010036
>>>逻辑右移,也叫无符号右移,高位补充0-8>>>2

这里举一个简单的例子:

  1. -8的源码为:10000000 00000000 00000000 00001000
  2. -8反码为:11111111 11111111 11111111 11110111,其补码为11111111 11111111 11111111 11111000
  3. 位移二位,高位补0,得到结果的补码:00111111 11111111 11111111 11111110
  4. 则结果的反码为:11000000 00000000 00000000 00000001,源码为001111111 11111111 11111111 11111110=1073741822

public class Test {
    public static void main(String [] args){
        System.out.println(-8>>1);
        System.out.println(9<<2);
        System.out.println(-8>>>2);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值