1字节= 8位
我将1111 1111
二进制数转换为十进制。它给了我255
。
但是当我将0111 1111
二进制数转换为十进制时。它正在给我127
。
所以在什么基础上声明范围。请帮助我。
提前致谢...
答案 0 :(得分:4)
Java中的数字类型已签名,这意味着它们可以是负数或正数。最左边的位(most significant bit)用于表示符号,其中1
表示否定,0
表示正数。
<强>字节强>
Max 01111111 = +127
Min 10000000 = -128
11111111 = -1
<强>短强>
Max 0111111111111111 = +32767
Min 1000000000000000 = -32768
0000000011111111 = +255
二进制负数用2's complement form表示。
答案 1 :(得分:1)
保留一位用于判断数字是负数还是正数。
因此,最大正数值将是
01111111 which gives the int number as 128(leftmost bit 0 represent its a postive number)
64+32+6+8+4+2+1= 127
对于最大负数值将((最左边的第1位代表其负数))
10000000 which gives the int number as -128
-128+0+0+0+0+0+0+0 = -128
因此范围变为
-127 to 128