understanding 3>>2 and -3>>2 results in Java -


when running code:

public class operatedemo18{ public static void main(string args[]){     int x = 3 ; // 00000000 00000000 00000000 00000011     int y = -3 ;    // 11111111 11111111 11111111 11111101     system.out.println(x>>2) ;         system.out.println(y>>2) ;        } }; 

i output as:

x>>2 0 y>>2 -1 

as understanding, since int x = 3, x>>2 equal (3/2)/2 0.75, integer, x>>2 0.

but don't understand why int y = -3, y>>2 -1. please explain it?

as understanding, since int x = 3, x>>2 equal (3/2)/2 0.75, integer, x>>2 0.

that's not entirely true; >> bitshift operation, nothing else. effect on positive integers division powers of two, yes. unsigned integers, it's not:

you conveniently supplied binary form of y == -3 yourself:

11111111 11111111 11111111 11111101 

let's bitshift right two!

y   == 11111111 11111111 11111111 11111101 y>>2== xx111111 11111111 11111111 11111111 

now, fill in x?

java, reasonable languages, sign-extends, ie. uses original highest (leftmost) bit:

y   == 11111111 11111111 11111111 11111101 y>>2== 11111111 11111111 11111111 11111111 

it isn't hard see "biggest" negative integer (remember, negative integers represented "two's complement"!), i.e. -1.


Comments

Popular posts from this blog

javascript - jQuery: Add class depending on URL in the best way -

caching - How to check if a url path exists in the service worker cache -

Redirect to a HTTPS version using .htaccess -