I feel lost when i have to convert a number into a byte representaion from an int.Like if int i=168 then how to convert it into -88 in 8 bits?

Another issue is if a byte =<some number exceeding 127> how to know what will be its equivalent form in byte representaion, say eg. System.out.println((byte)128); and System.out.println((byte)-128);

Is there any quick tip for such conversions please....

168 has the 10101000 representation in binary. I think that the first byte(1) means it is a negative number. Then the bits of the number left (0101000) will be inversed. 0101000 -> 1010111. 1010111 is 88 in binary. The same happens with 128. 128 is represented 10000000 in binary. Fallowing this rule from 10000000 (- minus because the first digit is one)and inversing the rest of the number we obtain 1111111(127 in decimal). I don't know if this rule remains for large numbers.

ioanis siafu
Greenhorn

Joined: Feb 06, 2008
Posts: 6

posted

0

I was wrong in my explications. The modulus of the two numbers added is 256.

168 is represented as 10101000 in binary.The most significant bit is the sign bit which means that 10101000 is actually a negative number and not 168.To get the negative number, first take the one's complement of 10101000, ie 01010111. now add 1 to this which gives 01011000 which is 88. So the number represented by 10101000 is actually -88.

Nikhil Raj
Greenhorn

Joined: Mar 20, 2008
Posts: 16

posted

0

for larger numbers only their least significant 8 bits are taken.. the rest are discarded.