首页 > 其他 > 详细

JAVA:移位运算符

时间:2014-02-09 16:35:06      阅读:359      评论:0      收藏:0      [点我收藏+]

位运算符用来对二进制位进行操作,分为左移位操作和右移位操作。
bubuko.com,布布扣左移位运算符
  ●左移位运算的符号为<<,左移位运算符左面的操作元称作被移位数,右面的操作数称作移位量。
  ●特点
   ◆是双目运算符。
   ◆操作元必须是整型类型的数据。
  ●左位移的过程
   ◆假设a是一个被移位的整型数据,n是位移量。
   ◆a<<n运算的过程是通过将a的所有位都左移n位,每左移一个位,左边的最高位(即左边的第1位)上的0或1被移出丢弃,并用0填充右边的低位。
   ◆比如:对整形数 8<<1的计算
     8的二进制表示: 0000,0000,0000,0000,0000,0000,0000,1000
     左移一位的结果:0000,0000,0000,0000,0000,0000,0001,0000
  ●注意
   ◆左位移操作是对整型数的操作,操作符两边必须是整型。
   ◆比整型更小的数据类型数据将被转换成整型进行运算,比整型更大的数据类型数据是不能进行移位运算的。
   ◆比整型更小的数据类型数据将被转换成整型时:对于正数将高位用0填充;负数将高位用1填充。
   ◆例:
      byte a = -8;
      System.out.println(a<<2);
      结果:-32
      1111,1111,1111,1111,1111,1111,1111,1000
                ↓
      1111,1111,1111,1111,1111,1111,1110,0000
   ◆在进行a<<n运算时
    ★如果a是byte、short或int型数据,系统总是先计算出n%32的结果m,然后进行a<<m运算。
    ★对于long型数据,系统总是先计算出n%64的结果m,然后进行a<<m运算。
    ★比如:
     对于int数 5<<1与5<<33的结果相等;
     对于long数 5<<1与5<<65的结果相等。
bubuko.com,布布扣右移位运算符
  右移位运算的符号为>>,右移位运算符左面的操作元称作被移位数,右面的操作数称作移位量。
  ●特点
   ◆是双目运算符。
   ◆操作元必须是整型类型的数据。
  ●右位移的过程
   ◆假设a是一个被移位的整型数据,n是位移量。
   ◆a>>n运算的过程是通过将a的所有位都右移n位,每右移一个位,右边的最低位(即右边的第1位)上的0或1被移出丢弃,并用0或1填充左边的高位(a是正数时用0填充,负数时用1填充)。
   ◆比如:对整形数 8>>1的计算
     8的二进制表示: 0000,0000,0000,0000,0000,0000,0000,1000
     右移一位的结果:0000,0000,0000,0000,0000,0000,0000,0100
  ●注意
   ◆右位移操作是对整型数的操作,操作符两边必须是整型。
   ◆比整型更小的数据类型数据将被转换成整型进行运算,比整型更大的数据类型数据是不能进行移位运算的。
   ◆比整型更小的数据类型数据将被转换成整型时:对于正数将高位用0填充;负数将高位用1填充。
   ◆例:
      byte a = -8;
      System.out.println(a>>2);
      结果:-2
      1111,1111,1111,1111,1111,1111,1111,1000
              ↓
      1111,1111,1111,1111,1111,1111,1111,1110
   ◆在进行a>>n运算时
    ★如果a是byte、short或int型数据,系统总是先计算出n%32的结果m,然后进行a>>m运算。
    ★对于long型数据,系统总是先计算出n%64的结果m,然后进行a>>m运算。
    ★比如:
      对于int数 5>>1与5>>33的结果相等;
      对于long数 5>>1与5>>65的结果相等。

JAVA:移位运算符

原文:http://www.cnblogs.com/hudingbo/p/3541373.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!