ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

Java位运算

2021-04-25 14:02:16  阅读:209  来源: 互联网

标签:反码 运算 补码 取反 负数 Java 正数 原码


1、原码、反码、补码之间的转换

计算机存储都是按补码进行存储的,正数的补码和原码一样,对负数进行位运算的时候要先算出它的补码。

1.1正数的原码、反码、补码都是相同的。

 

1.2 负数的反码:最高位符号位不变,其他位置取反

  负数的补码:反码加1就得到补码

  

 

2.位运算

&:按位与

0&1 = 0

0&0 =  0

1&1 = 1

例子: 5 & 9 = 1

  

 

 

 

| :按位或 

0 | 0 = 0

1 | 0 = 1

1 | 1 = 1

 

例子:5 ^ 9 = 12

 

 

~ :按位非

按位非首先获取补码,对齐位置全部取反包括符号位

如果原来的数是正数,得到补码后是负数,负数要先减1得到反码,反码再除符号位其余全部取反得到负数的最终的原码

如果原来的数是负数,得到补码后直接就是最后的正数。不用再求反码

 

 

 

 

左移运算:前面溢出的直接去除,后面空出来的补零!

 

正数直接左移:

负数先算出补码再左移,左移运算完了后,再减1,除符号位外其他位进行取反!

 

 

 >> 右移运算:后面溢出的直接去除,前面空出来的补符号位,正数补0,负数补1.

 

 

>>> 无符号右移  :后面溢出的直接去除,前面空出来的直接补0,正数负数都补0,所以无符号右移后的结果都是正数。

 

 

参考文献:https://blog.csdn.net/xiaoxiaole0313/article/details/103707926

 

标签:反码,运算,补码,取反,负数,Java,正数,原码
来源: https://www.cnblogs.com/cyx0721/p/14698592.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有