码迷,mamicode.com
首页 > 编程语言 > 详细

java中的位运算

时间:2017-10-18 16:10:13      阅读:321      评论:0      收藏:0      [点我收藏+]

标签:需要   二进制   nbsp   strong   print   http   com   long   一个   

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中的位运算

标签:需要   二进制   nbsp   strong   print   http   com   long   一个   

原文地址:http://www.cnblogs.com/cumtlg/p/7687007.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!