Java中的位运算

Posted Ferron Zhu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的位运算相关的知识,希望对你有一定的参考价值。

1、按位运算符

1.1、按位与(&)

运算规则:0&0=0;0&1=0;1&0=0;1&1=1;简单来说,就是两数都为1则为1,否则为0。

再举个例子,8&9=00001000&00001001=00001000=8。

如果有负数,则负数按其补码计算,例如:

-8的补码为11111000,-8&9=11111000&00001001=00001000=8

1.2、按位或(|)

运算规则:0|0=0;0|1=1;1|0=1;1|1=1;简单来说,就是两数都为0则为0,否则为1。

再举个例子,8&9=00001000|00001001=00001001=9。

如果有负数,则负数按其补码计算。

1.3、按位异或(^)

运算规则:0|0=0;0|1=1;1|0=1;1|1=0;简单来说,就是两数相同则为0,不相同为1。

再举个例子,8&9=00001000|00001001=00000001=1。

如果有负数,则负数按其补码计算。

1.4、取反(~)

运算规则:0=1;1=0;

8&~1=00001000&11111110=00001000=8

2、移位运算符

2.1、左移运算符(<<)

左移运算符的意思就是将一个数的二进制数左移n位,例如10<<2就代表将10的二进制数左移两位,右位补0,10的二进制为00001010,左移后就是00101000,结果为40,相当于10×2×2。即每左移一位,相当于原10进制数乘2。

2.2、右移运算符(>>)

右移运算符的意思就是将一个数的二进制数右移n位,例如60>>2就代表将60的二进制数右移两位,正数左位补0,负数左位补1,右边丢弃,60的二进制为00111100,左移后就是00001111,结果为15,相当于10÷2÷2。即每右移一位,相当于原10进制数除2。

2.3、无符号右移运算符(>>>)

无符号右移运算符的意思跟右移运算符差不多,唯一区别就是无符号右移运算法不区分正负数,无论如果都是左位补0,右位丢弃。

以上是关于Java中的位运算的主要内容,如果未能解决你的问题,请参考以下文章

Java中的位运算

Java中的位运算

java中的位运算

JAVA中的位运算和使用举例

Java中的位运算符

Java中的位运算符