java中的7个位运算运算符

Wesley13
• 阅读 375

位运算指的是针对整数的二进制进行的位移操作。

位运算提供比算术运算更高的效率,但是位运算的代码可读性较差,建议所有使用位运算的地方写上注释。

Java中提供7个位运算符用于位运算。

左移(<<)

左移运算是将操作数二进制值逐位左移若干位,左移过程中符号位不变,高位溢出则舍弃,低位则补0。

范例

结果

范例

结果

00000001<<2

00000100

10000001<<2

10000100

01100001<<2

00000100

11100001<<2

10000100

右移(>>)

右移运算是将操作数二进制值逐位右移若干位,右移过程中符号位不变,低位溢出则舍弃,并用符号位补溢出的高位,即负数补1,正数补0。

范例

结果

范例

结果

00000100>>2

00000001

10000100>>2

11100001

00000111>>2

00000001

10000111>>2

11100001

无符号右移(>>>)

无符号右移运算是将操作数所有二进制值逐位右移若干位,包括最高位符号位,也跟着右移,低位溢出并舍弃,高位补0。要注意的是,无符号右移(>>>)中的符号位(最高位)也会跟着变。

范例

结果

范例

结果

00000100>>>2

00000001

10000100>>>2

00100001

00000111>>>2

00000001

10000111>>>2

00100001

与(&)

与运算是将参与运算的两个二进制数进行&运算,如果两个二进制位都是1,则与运算的结果为1,其他全部都是0。

范例

结果

范例

结果

0&0

0

0&1

0

1&0

0

1&1

1

或(|)

或运算是将参与运算的两个二进制数进行|运算,如果两个二进制位都是0,则与运算的结果就是0,其他全都是1。即只要其中一个数字的二进制位是1,这个二进制位的运算结果就是1。要注意的是,符号位也是同样的操作。

范例

结果

范例

结果

0|0

0

0|1

1

1|0

1

1|1

1

非(~)

非运算符也叫做取反运算符,只针对一个二进制数进行操作,如果二进制位是0,则取反位1;如果二进制位是1,则取反位0。要注意的是,符号位也是同样的操作。

范例

结果

范例

结果

~0

1

~1

0

~0000 0001

1111 1110

~1111 1111

0000 0000

异或(^)

异或运算符是将参与运算的两个二进制数进行异或运算,如果两个二进制位相同,则结果为1,否则为0。

范例

结果

范例

结果

0^0

0

0^1

1

1^0

1

1^1

0

"越有故事的人越沉稳简单,越肤浅单薄的人越浮躁不安。"

点赞
收藏
评论区
推荐文章
技术小男生 技术小男生
4个月前
linux环境jdk环境变量配置
1:编辑系统配置文件vi/etc/profile2:按字母键i进入编辑模式,在最底部添加内容:JAVAHOME/opt/jdk1.8.0152CLASSPATH.:$JAVAHOME/lib/dt.jar:$JAVAHOME/lib/tools.jarPATH$JAVAHOME/bin:$PATH3:生效配置
光头强的博客 光头强的博客
4个月前
Java面向对象试题
1、请创建一个Animal动物类,要求有方法eat()方法,方法输出一条语句“吃东西”。创建一个接口A,接口里有一个抽象方法fly()。创建一个Bird类继承Animal类并实现接口A里的方法输出一条有语句“鸟儿飞翔”,重写eat()方法输出一条语句“鸟儿吃虫”。在Test类中向上转型创建b对象,调用eat方法。然后向下转型调用eat()方
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
1年前
java 二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题
一.二进制,位运算,移位运算1.二进制对于原码,反码,补码而言,需要注意以下几点:(1).Java中没有无符号数,换言之,Java中的数都是有符号的;(2).二进制的最高位是符号位,0表示正数,1表示负数;(3).正数的原码,反码,补码都一样;(4).负数的反码它的原码符号位不变,其他位取反;(5).
Wesley13 Wesley13
1年前
java位运算大全
位运算因为是CPU直接支持的操作指令,也是基于二进制的操作,所以具有相当高的效率,在一些场合,合理应用位运算将具有很高的性能。通常在一些加密算法,图型算法中都会使用到位运算。Java位运算符位 运 算 符 用 来 对 二 进制 位 进 行 操 作 ,Java中提 供 了 如 下所 示 的 位 运 算符:位 运 算 符 (>>,<<
Wesley13 Wesley13
1年前
C语言位运算
位运算应用口诀清零取反要用与,某位置一可用或若要取反和交换,轻轻松松用异或移位运算要点1它们都是双目运算符,两个运算分量都是整形,结果也是整形。        2"<<"左移:右边空出的位上补0,左边的位将从字头挤掉,其值相当于乘2。       3""右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空
Stella981 Stella981
1年前
20180109Java位运算
一,Java位运算1.表示方法:  在Java语言中,二进制数使用补码表示,最高位为符号位,正数的符号位为0,负数为1。补码的表示需要满足如下要求。 (1)正数的最高位为0,其余各位代表数值本身(二进制数)。 (2)对于负数,通过对该数绝对值的补码按位取反,再对整个数加1。 2.位运算符位运算表达式由
可莉 可莉
1年前
20180109Java位运算
一,Java位运算1.表示方法:  在Java语言中,二进制数使用补码表示,最高位为符号位,正数的符号位为0,负数为1。补码的表示需要满足如下要求。 (1)正数的最高位为0,其余各位代表数值本身(二进制数)。 (2)对于负数,通过对该数绝对值的补码按位取反,再对整个数加1。 2.位运算符位运算表达式由
Wesley13 Wesley13
1年前
JAVA位运算
位移动运算符:<<表示左移,左移一位表示原来的值乘2.例如:3<<2(3为int型)1)把3转换为二进制数字00000000000000000000000000000011,2)把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,3)在低位(右侧)的两个空位补零。则得到的最终结果是00000000
Wesley13 Wesley13
1年前
java按位操作符和位移操作符
一,按位操作符。1.按位与操作符(&) 如果两个数的二进制,相同位数都是1,则该位结果是1,否则是0. 例5&4    5的二进制是 0000000000000101    4的二进制是 0000000000000100    则结果是    0000000000