今天 远哥突然问了一个问题 System.out.println((~0L << 2) &(~0L >>> -5));
这个问题中出现了一个以前不常见的一种情况 就是(~0L >>> -5) 这个问题中
无符号右移出现了右边操作数是负数的情况 这种情况Java开发这么多年几乎没有遇到过
赶紧上网查找 知乎大神和CSDN大神都做出来回答 我在这里总结出来:
Chapter 15. Expressions
If the promoted type of the left-hand operand is int, then only the five lowest-order bits of the right-hand operand are used as the shift distance. It is as if the right-hand operand were subjected to a bitwise logical AND operator & ( §15.22.1) with the mask value 0x1f (0b11111). The shift distance