Win a copy of Murach's Python Programming this week in the Jython/Python forum!
  • Post Reply Bookmark Topic Watch Topic
  • New Topic

Shift Operators  RSS feed

 
niting Grover
Greenhorn
Posts: 1
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi ,

Can someone plz explain how do the >> (right shift operator) shift operators work in case of negative numbers i.e. how do i get the decimal value from applying this operator on a negative number ?

For eg whats the result of a >>1 (int a = -128) ?
 
Mike Gershman
Ranch Hand
Posts: 1272
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
-128 in decimal is 11111111 11111111 11111111 10000000 in binary

a >> 1 shifts the bits of a one place to the right, filling the gap on the left with a copy of the original leftmost (sign) bit, giving us
-64 in decimal which is 11111111 11111111 11111111 11000000 in binary
 
Mike Gershman
Ranch Hand
Posts: 1272
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
To convert a two's complement negative binary number to decimal, replace every 1 with a 0 and every 0 with a 1, then add 1 to the result. Convert that number to decimal and show it with a minus sign.
 
It is sorta covered in the JavaRanch Style Guide.
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!