Win a copy of Design for the Mind this week in the Design forum!
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

whizlabs question

 
kapil munjal
Ranch Hand
Posts: 298
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

I found this question in whizlabs mocks.

byte b = (byte) 256;

System.out.println(b);

Value of b printed as _________.


Explanation of the answer is

"Since the integer's value (256) is larger than the byte's range (-128 to +127), the result is the remainder of the division of the integer value by the byte's range (256) which is zero"

I have not been able to understand the explanation of this answer.

I was thinking the solution in this way.....

00000000 00000000 00000001 00000000 (256 in Decimal)

when we cast it to byte then we are left with only the first 8 bits.

00000000

so after casting and after removing the other 24 bits, it will be 0.

I hope my method of doing it is right.

But I have not been able to understand the explanation of WHIZLABS mock.

Please someone explain that way of finding the value.

Thanks
Kaps
 
Corey McGlone
Ranch Hand
Posts: 3271
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Kapil,

Your method is just fine. In addition, you can check out this SCJP Tipline article for more details.
 
Abhijeet Nagre
Greenhorn
Posts: 4
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Hi,

See 14 in binary is 1110

if you take only 1 LSB Bit the Ans is : 0
if you divide 14 BY 2(2 raise to 1) Ans is : 0

Simillerly,
if you take only 3 LSB Bits the Ans is : 6
and if you divide 14 BY 8(2 raise to 3) Ans is : 6

So when you take LSB Bits you indirectly divide the original no
By no which is 2 raise to the no of Bits you are removing.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic