当前位置: 首页 > Thinking in Java > 正文

第3章- 操作符 -Java,移位操作

1. >> 右移,带符号右移,如果首位是1,则右移时 高位补1,否则补0

2. >>> 无符号右移, 右移时高位补0

3. << 左移,低位补0

测试代码:

package test.byteoperator;

public class TestByteOperator
{
  public static void main(String[] args)
  {
    int iA = 7;
    int iB = -1;
    System.out.println("1:" + Integer.toBinaryString(iA));//111
    System.out.println("2:" +Integer.toBinaryString(iB)); //11111111111111111111111111111111 负数 首位1表示负数,先取反,然后+1,得到绝对值
    
    //正数右移
    int iC = iA >> 2; //正数 右移2位相当于除以4
    System.out.println("3:" + iC); //1
    System.out.println("4:" +Integer.toBinaryString(iC)); //1
    
    //负数数右移
    
    iC = iB >> 2; //正数 右移2位,比较诡异,高位补1,使得-1右移两位,还是-1
    System.out.println("5:" +iC); //-1
    System.out.println("6:" +Integer.toBinaryString(iC)); //11111111111111111111111111111111
    
    //假如赋值如下:
    //iB = -9;
    //System.out.println("5:" +iC); // -3
    //System.out.println("6:" +Integer.toBinaryString(iC)); //11111111111111111111111111111101
    
    //负数 无符号 右移
    iC = iB >>> 2; //负数无符号 右移高位补00,使得负数 变成正数了
    System.out.println("7:" +iC); //1073741823
    System.out.println("8:" +Integer.toBinaryString(iC)); //111111111111111111111111111111
    
    //正数左移
    iC = iA << 2; //正数左移2位,相当于乘以4,
    System.out.println("9:" +iC); //28
    System.out.println("10:" +Integer.toBinaryString(iC)); //11100
    
    //负数左移
    iC = iB << 2; //负数左移2位,还是相当于乘以4,
    System.out.println("11:" +iC); //-4
    System.out.println("12:" +Integer.toBinaryString(iC)); //11111111111111111111111111111100
    
    //没有无符号左移 <<<
  }
}

 

赞 赏

   微信赞赏  支付宝赞赏


本文固定链接: https://www.jack-yin.com/coding/thinking-in-java/2398.html | 边城网事

该日志由 边城网事 于2013年06月06日发表在 Thinking in Java 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: 第3章- 操作符 -Java,移位操作 | 边城网事
关键字: ,

第3章- 操作符 -Java,移位操作 暂无评论

发表评论

快捷键:Ctrl+Enter