您当前的位置: 首页 >  Java

彭世瑜

暂无认证

  • 1浏览

    0关注

    2791博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Java中二进制计算与&、或|、非~、异或^、左移<<、右移>>、无符号右移>>>

彭世瑜 发布时间:2020-07-15 10:36:39 ,浏览量:1

1、&二进制与

2 & 3

0B10 & 0B11 => 0B10 => 2

2、|二进制或

2 | 3

0B10 & 0B11 => 0B11 => 3

3、~二进制非

~3
= ~ 0B00000000 00000000 00000000 00000011
= 0B11111111 11111111 11111111 11111100  
取反之后变成了负数是补码表示 需要求其原码:补码的补码等于原码

=> 0B10000000 00000000 00000000 00000011  反码
=> 0B10000000 00000000 00000000 00000100  反码+1取补码 
= -4

4、^二进制异或

2 ^ 3

0B10 ^ 0B11 => 0B01 => 1

5、 二进制有符号右移

12 >> 2
0B1100 >> 2 => 0B0011 => 3

-12 >> 2 
= 0B10000000 00000000 00000000 00001100 原码
=> 0B11111111 11111111 11111111 11110011 反码
=> 0B11111111 11111111 11111111 11110100 补码
>> 2
= 0B11111111 11111111 11111111 11111101 原码
=>  0B10000000 00000000 00000000 00000010 反码
=>  0B10000000 00000000 00000000 00000011 补码
= -3

7、>>> 二进制无符号右移

>>>与>>唯一的不同是它无论原来的最左边是什么数,统统都用0填充。

12 >>> 2
0B1100 >>> 2 => 0B0011 => 3

-12 >>> 2
= 0B10000000 00000000 00000000 00001100 原码
=> 0B11111111 11111111 11111111 11110011 反码
=> 0B11111111 11111111 11111111 11110100 补码
>>> 2
= 0B0011111111 11111111 11111111 111101
= 1073741821

备注 : 0B表示二进制

参考

  1. java中位运算^,&,,总结
关注
打赏
1665367115
查看更多评论
立即登录/注册

微信扫码登录

0.2428s