按位与、按位或、异或、左移、右移、取反、无符号右移

位运算符简介

Java中的位运算符:按位与、按位或、异或、左移、右移、取反、无符号右移等。

规则:先把十进制转二进制,再用二进制进行位运算,再转十进制。

如(计算机中一般是8位制,也可以写成32位制,不足的补0):

11的二进制为: 0000 1011
9的二进制为:  0000 1001
8的二进制为:  0000 1000
5的二进制为:  0000 0101

可理解为,二进制从右到左依次是个位、十位、百位、千位等等。

&(按位与)

运算规则:(两个为真才为真)1&1=1 , 1&0=0 , 0&1=0 , 0&0=0

11 & 9 = 1011 & 1001 = 1001 = 9
 8 & 5  = 1000 & 0101 = 0000 = 0

 

|(按位或)

运算规则:(一个为真即为真)1|1 = 1 , 1|0 = 1 , 0|1 = 1 , 0|0 = 0

11 | 9 = 1011 | 1001 = 1011= 11
 8 | 5  = 1000 | 0101 = 1101= 13

 

^(异或)

运算规则:1^1 = 01^0 = 1 , 0^1 = 1 , 0^0 = 0

11 ^ 9 = 1011 ^ 1001 = 0010 = 2
8 ^ 5  = 1000 ^ 0101 = 1101 = 13

 

<<(左移)

运算规则:二进制位往左挪位,右边补0

11 << 2 = 0000 1011= 0010 1100 = 44

9 << 2 = 0000 1001 = 0010 0100 = 36

8 << 2 = 0000 1000= 0010 0000 = 32

5 << 2 = 0000 0101 = 0001 0100 = 20

 

>>(右移)

运算规则:二进制位往右挪位,左边补0

11 >> 2 = 0000 1011= 0000 0010 = 2

9 >> 2 = 0000 1001 = 0000 0010 = 2

8 >> 2 = 0000 1000= 0000 0010 = 2

5 >> 2 = 0000 0101 = 0000 0001 = 1

 

~(取反)

运算规则:用32位制表示,1取反为0,0取反为1,原码加1,再取负数

公式:如常数a,对a进行取反,结果为:-(a+1)

注:所有的取反操作、加1、减1操作,都在有效位进行;

~11

11的原码:00000000 00000000 00000000 00001011

11的反码:11111111 11111111 11111111 11110100

取补码 = 原码+1:00000000 00000000 00000000 00001100 = 12 = -12

结论:~11取反结果为-12

 

~9

9的原码:00000000 00000000 00000000 00001001

9的反码:11111111 11111111 11111111 11110110

取补码 = 原码+1:00000000 00000000 00000000 00001010 = 10 = -10

结论:~9取反结果为-10

 

~8

8的原码:00000000 00000000 00000000 00001000

8的反码:11111111 11111111 11111111 11110111

取补码 = 原码+1:00000000 00000000 00000000 00001001 = 9 = -9

结论:~8取反结果为-9

 

~5

5的原码:00000000 00000000 00000000 00000101

5的反码:11111111 11111111 11111111 11111010

取补码 = 原码+1:00000000 00000000 00000000 00000110 = 6 = -6

结论:~5取反结果为-6

 

>>>(无符号右移)

运算规则:无符号右移是高位补0,移多少位补多少个0

备注:对于正数和0,>>>无符号右移和>>右移效果是一样的。

          负数移位,右边(低位)移出,直接舍弃,左边(高位)全部补0(1变为0,负数变正数)。

11 >>> 2 = 0000 1011 = 0000 0010 = 2

-11 >>> 2 结果为:1073741821

 

9 >>> 2 = 0000 1001 = 0000 0010 = 2

-9 >>> 2 结果为:1073741821

 

8 >>> 2 = 0000 1000= 0000 0010 = 2

-8 >>> 2 结果为:1073741822

 

5 >>> 2 = 0000 0101 = 0000 0001 = 1

-5 >>> 2 结果为:1073741822

 

识别二维码关注个人微信公众号

本章完结,待续,欢迎转载!
 
本文说明:该文章属于原创,如需转载,请标明文章转载来源!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值