当前位置: 首页 > Thinking in Java > 正文
第3章- 操作符 -Java,移位操作
Jun062013
作者:边城网事 发布:2013-06-06 16:55 分类:Thinking in Java 阅读:1 抢沙发
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 | 边城网事