This week's book giveaways are in the Refactoring and Agile forums.
We're giving away four copies each of Re-engineering Legacy Software and Docker in Action and have the authors on-line!
See this thread and this one for details.
Win a copy of Re-engineering Legacy Software this week in the Refactoring forum
or Docker in Action in the Cloud/Virtualization forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

>> shift question

 
Moya Green
Ranch Hand
Posts: 49
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Question: What is the result of the following fragment of code?
(byte)0x81 >> 2
A. 0x20
B. 0x3FFFFFE0
C. 0xE0
D. 0xFFFFFFE0
Answer is D. I understand the complier will widen the byte to an int before performing the shift, but could not figure out the result. Please help me. Many thanks.
Moya
 
Dan Chisholm
Ranch Hand
Posts: 1865
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
(byte)0x81 >> 2
0x81 = 1000 0001
It is first converted to an int before the shift.
11111111 11111111 11111111 10000001
After the shift it is as follows.
11111111 11111111 11111111 1110 0000 = 0xFFFFFFE0
 
Moya Green
Ranch Hand
Posts: 49
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Dan,
Thank you very much. I was stuck in the step to modify
1000 0001 -->11111111 11111111 11111111 10000001. I thought "0" was added before 1000 0001. Anyway, I understand it now. I appreciate your help!
Moya
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic