1)左移位运算符(<<)
将运算符左边的对象向左移动运算符右边指定的位数,无论正负,在低位补零。
2)"有符号"
右移运算符 (>>)
将运算符左边的对象向右移动指定的位数,正数在高位补零,负数在高位补一。
3)"无符号" 右移运算符
(>>>)
将运算符左边的对象向右移动指定的位数,无论值正负,在高位补零。
public static void main(String[] args) {
System.out.println("---
左移操作 ---");
int num1 = 8;
int num2 = -8;
int num3 =
num1 << 2; // 最右边补0
int num4 = num2 << 3; //
最右面补0
System.out.println("num1(8)的二进制表示:");
System.out.println("num1(binary):"
+ Integer.toBinaryString(num1)); //
8的二进制表示
System.out.println("8左移2位后的二进制结果:");
System.out.println("num3(binary):"
+ Integer.toBinaryString(num3)); // 左移一位
相当于该数乘以2
System.out.println("8左移2位后的十进制结果:");
System.out.println("num3:"
+
num3);
System.out.println("num2(-8)的二进制表示:");
System.out.println("num2(binary):"
+ Integer.toBinaryString(num2)); //
-8的二进制表示(2的反码+1)
System.out.println("-8左移3位后的二进制结果:");
System.out.println("num4(binary):"
+
Integer.toBinaryString(num4));
System.out.println("-8左移3位后的十进制结果:");
System.out.println("num4:"
+ num4);
System.out.println();
System.out.println("--- 有符号右移操作
---");
num1 = 8;
num2 = -8;
num3 = num1 >> 2;
// 正数,最左边补0,负数,最左边补1
num4 = num2 >> 3; //
正数,最左边补0,负数,最左边补1
System.out.println("num1(8)的二进制表示:");
System.out.println("num1(binary):"
+ Integer.toBinaryString(num1)); //
8的二进制表示
System.out.println("8右移2位后的二进制结果:");
System.out.println("num3(binary):"
+ Integer.toBinaryString(num3)); // 有符号右移一位
相当于该数除以2
System.out.println("8右移2位后的十进制结果:");
System.out.println("num3:"
+
num3);
System.out.println("num2(-8)的二进制表示:");
System.out.println("num2(binary):"
+ Integer.toBinaryString(num2)); //
-8的二进制表示(2的反码+1)
System.out.println("-8右移3位后的二进制结果:");
System.out.println("num4(binary):"
+
Integer.toBinaryString(num4));
System.out.println("-8右移3位后的十进制结果:");
System.out.println("num4:"
+ num4);
System.out.println();
System.out.println("--- 无符号右移操作
---");
num1 = 8;
num2 = -8;
num3 = num1 >>>
2; // 最左边补0
num4 = num2 >>> 3; //
最左边补0
System.out.println("num1(8)的二进制表示:");
System.out.println("num1(binary):"
+ Integer.toBinaryString(num1)); //
8的二进制表示
System.out.println("8右移2位后的二进制结果:");
System.out.println("num3(binary):"
+ Integer.toBinaryString(num3)); // 正数无符号右移一位
相当于该数除以2
System.out.println("8右移2位后的十进制结果:");
System.out.println("num3:"
+
num3);
System.out.println("num2(-8)的二进制表示:");
System.out.println("num2(binary):"
+ Integer.toBinaryString(num2)); //
-8的二进制表示(2的反码+1)
System.out.println("-8右移3位后的二进制结果:");
System.out.println("num4(binary):"
+
Integer.toBinaryString(num4));
System.out.println("-8右移3位后的十进制结果:");
System.out.println("num4:"
+ num4);
}
原文:http://www.cnblogs.com/keyiei/p/3584079.html