int i = Integer.MIN_VALUE; byte b = Byte.MIN_VALUE; i>>>=1; b>>>=1; System.out.println(i); System.out.println(b); output: 1073741824 -64 Why for i output positive value, for b output negative value ?
posted 13 years ago
Integer.MIN_VALUE = 80000000 Byte.MIN_VALUE = 80 = 10000000 when applying the >>> to the byte, it first gets promoted to int then get shifted. after being shifted because of >>>= it gets implecitly casted back to byte so the value gets truncated. the output of this code should make you understand what happens.
[ October 14, 2002: Message edited by: Alfred Kemety ]