java中的位运算

Posted

tags:

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

java中的位运算有7个:

  1. & 按位与
  2. |  按位或
  3. ~ 按位非
  4. ^ 按位异或
  5. << 左移运算
  6. >> 右移运算
  7. >>> 无符号右移运算

位运算符的运算法则如下:

技术分享

public static void main(String[] args) {
        System.out.println(5 & 9);
        System.out.println( 5 | 9); 
        System.out.println(~-5);
        System.out.println(5 ^ 9);
    }

运行输出结果为:

技术分享

我们先来看看那5 & 9 和5 | 9的运算:

5的二进制码:    0101        0101
9的二进制码:   &1001       |1001
结果:          0001        1101

程序执行~-5的结果是 4

-5的源码:100000000000000000000000000000101
    除符号位按位取反
-5的反码:111111111111111111111111111111010    
    反码加1得到补码
-5的补码:111111111111111111111111111111011
    取反后最高位符号为0
-5的补码:000000000000000000000000000000100

记住:原码(出符号位)取反得到得到反码,反码加一得到得到补码

5 ^ 9的值是12,运算过程如下:
(省略24个0)
5的二进制:00000101
9的二进制:00001001
异或    :00001100

左移运算

左移运算是将运算数的二进制码整体左移指定的位数,左移后右边空出来的位以0填充(负数在计算机中是以补码的形式存在,左移运算时也是运算补码)

public static void main(String[] args) {
        System.out.println(5 << 2);
        System.out.println(-5 << 2);
    }

打印结果是20 -20

右移运算:

java中的右移运算有两个:>>,>>>,对于>>而言,把第一个操作数的二进制向右移动指定的位数,左边的位置以原来的符号位填充,

>>>是无符号右移运算,他把第一个操作数的二进制码右移指定的位数后,左边空出来的数用0填充,

<<,>>,>>>这三个运算符只合适于对byte、short、long、int、char等帧数运算,进行位运算需要遵循如下规则:

  • 对于低于 int 类型的操作数必须先自动转换为int类型再位移
  • 对于int 类型的整数位移a<<b,当b>32时,系统会先用b对32求余,得到的数值才是真正的求余数
  • long类型与int类型雷同

 



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

Java中的位运算

Java中的位运算

java中的位运算

JAVA中的位运算和使用举例

Java中的位运算符

Java中的位运算符