/* * <<:左移 左边最高位丢弃,右边补齐0 * >>:右移 最高位是0,左边补齐0;最高位是1,左边补齐1 * >>>:无符号右移 无论最高位是0还是1,左边补齐0 * 面试题: * 请用最有效率的方式写出计算2乘以8的结果? * 2 << 3 */ public class OperatorDemo { public static void main(String[] args) { //<< 把<<左边的数乘以2的移动次幂 System.out.println(3<<2);//3*2^2=12 //>> 把>>左边的数除以2的移动次幂 System.out.println(24>>2);//24/2^2=6 System.out.println(24>>>2); System.out.println(-24>>>2); } } /* * <<左移: * 计算出3的二进制:11 * 00000000 00000000 00000000 00000011 * (00)000000 00000000 00000000 0000001100 * >>右移: * 计算出-24的二进制:11000 * 原码:10000000 00000000 00000000 00011000 * 反码:11111111 11111111 11111111 11100111 * 补码:11111111 11111111 11111111 11101000 * 1111111111 11111111 11111111 111010(00) * 反码:1111111111 11111111 11111111 111001 * 原码:1000000000 00000000 00000000 000110 * 结果:-6 * >> */