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

举报
彭世瑜 发表于 2021/08/14 00:11:13 2021/08/14
【摘要】 1、&二进制与 2 & 3 0B10 & 0B11 => 0B10 => 2 123 2、|二进制或 2 | 3 0B10 & 0B11 => 0B11 => 3 123 3、~二进制非 ~3 = ~ 0B00000000 00000000 00000000 00000011 = 0B11111111...

1、&二进制与

2 & 3

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

  
 
  • 1
  • 2
  • 3

2、|二进制或

2 | 3

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

  
 
  • 1
  • 2
  • 3

3、~二进制非

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

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

4、^二进制异或

2 ^ 3

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

  
 
  • 1
  • 2
  • 3

5、<< 左移

3 << 4

0B11 << 4 => 0B110000 => 48

相当于 

3 * 2 ** 4 = 3 * 16 = 48

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

6、>> 二进制有符号右移

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

备注 : 0B表示二进制

参考

  1. java中位运算^,&,<<,>>,<<<,>>>总结

文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。

原文链接:pengshiyu.blog.csdn.net/article/details/107354500

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。