Let 1 be a 32 bit integer in Java, what should 1<<32 be?
0? Because the "1" bit will be shifted to the far left?
In fact, it is 1. See in the Java programming spec, "If the promoted type of the left-hand operand is int, 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 & with the mask value 0x1f. The shift distance actually used is therefore always in the range 0 to 31, inclusive." So << can be considered as a cyclic left shift operation, the bits shifted on the left end will reappear on the right end.
Saturday, February 06, 2010
Subscribe to:
Posts (Atom)