位运算符(逻辑、移位)详解

位运算符有七个,分为两类:

逻辑位运算符:位与(&)、位或(|)、位异或(^)、非位(~)
移位运算符:左移(<<)、右移(>>)、无符号右移(>>>)

1. 逻辑为运算符

主要包括:位与(&)、位或(|)、位异或(^)、非位(~)

1.1 位与(&)

参加运算的两个数据,按二进制位进行“与”运算。运算规则:同1为一,其余为0

例:

3&5=10000 0011& 0000 0101 = 0000 0001

1.2 位或(|)

参加运算的两个对象,按二进制位进行“或”运算。运算规则:同0为0,有1为1

例:

2|6=60000 0010 | 0000 0110 = 0000 0110

1.3 位异或(^)

参与运算的两个数据,按二进制位进行“异或”运算。运算规则:相同为0,不同为1
例:

2^6=40000 0010 ^ 0000 0110 = 0000 0100

1.4 非位(~)

即按位取反,操作会翻转其每一位。运算规则:0变为1,1变为0

0=1,1=0

1.5 负数的逻辑运算:

负数按补码形式参加按位或运算,符号位也要参与运算。
例:

-2:原码:1000 0010,反码(符号位不变,其他位取反):1111 1101,补码:1111 1110
-2|6= 即:1111 1110 | 0000 0110 

2. 移位运算符

主要包括:左移(<<)、右移(>>)、无符号右移(>>>)

2.1 左移(<<)

符号左边是要进行左移运算的数,右边表示要移动的位数。运算规则:高位丢弃,低位补0
(byte、short会转成int,即32位进行移位操作)

相当于乘法,左移2位即x4
例:

5<<2=200000 0101 << 2 = 0001 0100
(2^31 -2)<<2=-80111 1111 1111 1111 1111 1111 1111 1110 << 2 
= 1111 1111 1111 1111 1111 1111 1111 1000(补码)
= 1111 1111 1111 1111 1111 1111 1111 0111(反码)
= 1000 0000 0000 0000 0000 0000 0000 1000(原码)
= -8

2.2 右移(>>)

符号左边是要进行左移运算的数,右边表示要移动的位数。运算规则:正数左补0,负数左补1

相当于除法,右移2位即除以4

例:

5>>2=1 即:0000 0101 >> 2 = 0000 0001
-3>>2=-1
即:(这里就用8位表示,实际是32位)
1000 0011 >>2 = 1111 1100>>2 = 1111 1101>>2 = 1111 1111= 1111 1110= 1000 0001= -1

2.3 无符号右移(>>>)

即右移之后,无论该数为正还是为负,右移之后左补0。

正数和右移一样,
负数:

-3>>>2 = 1073741823 ,不做演示

3. 一些应用:

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值