/** * 右移 >> 正数 * 0000 0000 0000 0000 0000 0000 0000 0101 * 0000 0000 0000 0000 0000 0000 0000 0000 */ System.out.println(5 >> 3);//结果为0 /** * 右移 >> 负数 * 负数补码 * 1111 1111 1111 1111 1111 1111 1111 1011 * 右移,左边补1 * 1111 1111 1111 1111 1111 1111 1111 1111 */ System.out.println(-5 >> 3);//结果为 -1 /** * 右移 >>> 无符号右移 即高位补0 * 1111 1111 1111 1111 1111 1111 1111 1011 * 0001 1111 1111 1111 1111 1111 1111 1111 * 因此变成了正数了 */ System.out.println(-5 >>> 3);// 结果是 536870911 /** * 无符号左移 <<< ,不存在的 */