ICode9

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

Java位操作符

2019-10-27 17:06:55  阅读:206  来源: 互联网

标签:Java 结果 补码 取反 反码 操作符 按位 原码


java位操作符前言

我们知道计算机底层是二进制也就是0和1,00100101转为10进制的计算方式 1+0*2^1+1*2^2+0*2^3+0*2^4+1*2^5+0*2^6=37

1个字节=8位元组(bit),最高位是符号位,0代表正1代表负。

1.理论定义

(1)二进制的最高位是符号位,0表示正数,1表示负数;

(2)正数的原码、反码、补码都一样

(3)负数的反码=它的原码符号位不变,其它位取反(0->1   0->0);

(4)负数的补码=它的反码+1;反码=补码-1;

(5)0的反码补码都是0;

(6)java没有无符号数,java中数都是有符号的;

(7)在计算机运算的时候,都是以补码的方式来运算的,所以负数计算按位或,按位与,按位异或等都要先把十进制的负数取得补码以后再进行运算,同样,结果是负数元组(1********)的时候也要转成反码,再转成原码。

2.位运算符和移位运算符:

Java中有4个位运算,分别是“按位与&、按位或|、按位异或^、按位取反~”,它们运算规则:

按位与&:两位全为1,结果为1;

按位或|:两位有一个为1,结果为1;

按位异或^:只有当相应位上的数字不相同时,该位才取1,若相同,即为0;

按位取反~:0->1、 1->0

3.Java中有三个移位运算符:

>>算术右移:低位溢出,符号位不变,并用符号位补溢出的高位

<<算术左移:符号位不变,低位补0

>>>逻辑右移:低位溢出,高位补0

实例:

示例1:~2:
原数按位取反得到负数元组(补码),所以要转成反码,然后转成原码
原数:00000010
取反:11111101  这个结果是补码
反码:11111100
结果:10000011  结果-3

示例2:2&3
00000010
00000011
结果:00000010  结果:2

示例3:2|3
00000010
00000011
结果:00000011 结果3

示例4:~-5
因为计算机计算都按补码计算,所以先获取-5的补码,然后包括符号位在内全部0变1,1变0,获取结果
原码:100000101
反码:111111010
补码:111111011
结果:000000100 结果:4

示例5:-3^3
-3原码:100000011
      反码:111111100
      补码:111111101
00000011
      结果:11111110(这是补码)
      补码:11111110加上-1的补码111111111结果是1111111101取反100000010 结果-2

标签:Java,结果,补码,取反,反码,操作符,按位,原码
来源: https://blog.csdn.net/zhouhaisunny/article/details/102768481

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

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

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

ICode9版权所有