在java中, byte的取值范围:2的7次方--- 2的7次方减去1;既然byte的最高位为符号位,为什么取值范围还是负的2的7次方到2的7次方减去1而不是2的6次方到2的六次方减一呢?还有可以告知short int long 的取值范围吗?因为我看资料写的很乱,不知道到底哪个对。像short的取值范围是2的16次方到2的16次方减一还是2的15次方到2的15次方减一啊?可以再解释一下吗?
调试欢乐多
,左边第一位是符号位,所以用以表示数值的实际只有7位,然后就可以得到它的范围了,是(-)111 1111->(+)111 1111,即
-2的6次方加上-2的5次方。直到-2的0次方,也就是
-64+(-32)+(-16)++(-1)=-127,
同理得+127,
那为什么是-128呢。因为还有(1)000 0000,即(-)000 0000=-128
,左边第一位是符号位,所以用以表示数值的实际只有7位,然后就可以得到它的范围了,是(-)111 1111->(+)111 1111,即
-2的6次方加上-2的5次方。直到-2的0次方,也就是
-64+(-32)+(-16)++(-1)=-127,
同理得+127,
那为什么是-128呢。因为还有(1)000 0000,即(-)000 0000=-128
http://blog.csdn.net/stonecao/archive/2011/03/22/6269203.aspx
有不明白的欢迎留言请教