This week's book giveaway is in the JavaScript forum.We're giving away four copies of Cross-Platform Desktop Applications: Using Node, Electron, and NW.js and have Paul Jensen on-line!See this thread for details.
Win a copy of Cross-Platform Desktop Applications: Using Node, Electron, and NW.js this week in the JavaScript forum!
programming forums Java Java JSRs Mobile Certification Databases Caching Books Engineering Languages Frameworks Products This Site Careers Other all forums
this forum made possible by our volunteer staff, including ...
Marshals:
Sheriffs:
Saloon Keepers:
Bartenders:

# question on Shifting

Veena Pointi
Ranch Hand
Posts: 442
int a =-8;
int b=~-33;
a>>>=b;
System.out.println(a);
above code prints -8 ,how?Can anybody please explain?
Is expression like 8>>-4 valid?how to solve questions that involve shifting with negative numbers?
thanks
Veena

Sachin Tendulkar
Greenhorn
Posts: 27
int a =-8;
int b=~-33;
a>>>=b;
System.out.println(a);
above code prints -8 ,how?Can anybody please explain?
Is expression like 8>>-4 valid?how to solve questions that involve shifting with negative numbers?
thanks
Veena

Step 1) a>>=b is expanded to
a = (int) (a >> b)
Step 2) b = ~-33
= -(-33) - 1
= 33 - 1
b = 32
(remember ~x = -(x) - 1)
Step 3) a = (int) (a >> 32)
32 in binary is represented as
00000000 00000000 00000000 00100000
When shifting numbers if the type is int then the number of places to shift is denoted by the top 5 bits of the number to shift by
in this case the top 5 bits of 32 are 00000 which is 0
so in short the expression is reduced to
Step 4) a = (int) (a >> 0)
a = (int) a
a = -8
HTH