• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

>>> operator

 
Eugene Lea
Greenhorn
Posts: 12
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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 ?
 
Alfred Kemety
Ranch Hand
Posts: 279
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
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 ]
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic