自学JAVA 有点不明白 为什么说byte的取值范围是+127到—128
9个回答
展开全部
我来试着解释一下~
一个byte由八个位组成,如00000000,其中,前7位表示数值,第8位是符号位(0为正,1为负)。这样+1就是00000001,-1就是10000001。最大的正数就是0 1111111,即2^0+2^1+……+2^6=127;最小的负数,同理,为1 1111111,即-127。
到这里应该是许多人不明白的地方,为什么负数会到-128。这不得不崇拜伟大的印度阿三们。
上述的描述会出现一个问题,就是0,会出现一个+0和一个-0。印度人他们规定-0为-128,这样就与计算机的补码(程序都是按补码运行的)完美的结合在一起。
以此类推,int,short,long都可以推出他们的取值范围。
一个byte由八个位组成,如00000000,其中,前7位表示数值,第8位是符号位(0为正,1为负)。这样+1就是00000001,-1就是10000001。最大的正数就是0 1111111,即2^0+2^1+……+2^6=127;最小的负数,同理,为1 1111111,即-127。
到这里应该是许多人不明白的地方,为什么负数会到-128。这不得不崇拜伟大的印度阿三们。
上述的描述会出现一个问题,就是0,会出现一个+0和一个-0。印度人他们规定-0为-128,这样就与计算机的补码(程序都是按补码运行的)完美的结合在一起。
以此类推,int,short,long都可以推出他们的取值范围。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用一个字节Byte(由8个位组成)所以可以表示2^8个不同的值,至于为什么是-128到+127,等待java方面的前辈吧,听说JAVA把很多东西都是规定死了的(表达式、函数的求值顺序等)
但C语言中并没有明确规定,有可能是-127到128或是别的什么,因为这关乎CPU内部表示数所用的方法(常见的是补码)
但C语言中并没有明确规定,有可能是-127到128或是别的什么,因为这关乎CPU内部表示数所用的方法(常见的是补码)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
内存8位 第一位是正负数 正数 最大位0111 1111,也就是数字127 负数最大为1111 1111也就是数字-128
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
搜了好久。。还是这位的回答最靠谱。推荐~
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询