黑马程序员技术交流社区

标题: 为什么byte的取值范围是-128到127 [打印本页]

作者: xiongjin1991    时间: 2016-3-7 22:52
标题: 为什么byte的取值范围是-128到127
为什么byte的取值范围是-128到127
作者: 翔骋丨灬公爵    时间: 2016-3-7 23:17
{:2_33:}这是规定吧 ,反正我就这么记就行
作者: zixiyang    时间: 2016-3-7 23:28
我不怎么记得这几个类型的范围啊。。。
作者: fagug    时间: 2016-3-8 00:07
一个byte类型数据是1个字节8比特位,bit为上只有1和0的二进制表示,你把二进制 1111 1111转成十进制就是-127,二进制0111 1111转成十进制就是127,所以byte数据的取值范围是-128到127
作者: 278008379    时间: 2016-3-8 00:17
楼上说的对

作者: xiongjin1991    时间: 2016-3-8 03:16
fagug 发表于 2016-3-8 00:07
一个byte类型数据是1个字节8比特位,bit为上只有1和0的二进制表示,你把二进制 1111 1111转成十进制就是-12 ...

-128怎么来的
作者: and4576sdo    时间: 2016-3-8 11:26
三楼正解。
作者: 友人A    时间: 2016-3-8 12:38
xiongjin1991 发表于 2016-3-8 03:16
-128怎么来的

我纠正一下层主的意思:-128到127.共256个数。刚好可以用一个字节(8位)表示出来(2^8=256);
其实,1111 1111表示的是-1,而不是-128;
首先,因为要表示出负数,所以它的最高位是符号位。0表示正数,1表示负数;如:
127是0111 1111这样表示的。
-128是1000 0000这样表示的。
127后面是-128,最大的正数加下来是最小的负数。这就跟钟表一样,12点钟后面是1点中钟一样。
因为它是用补码的编码方式。(下面的看不懂可以直接跳过,或者百度了解之后再看)
正数的补码就是它的原码,也就是单纯的二进制数。负数的话,看下面例子:
1111 1111这个二进制串,首先它最高位是1,明确他是个负数。
那么其余位是111 1111,按位取反得到:000 0000,再加1就是:000 0001
也就是1,再加上符号位。最终结果是-1
作者: Lee♥晓蕾    时间: 2016-3-8 13:48
友人A 发表于 2016-3-8 12:38
我纠正一下层主的意思:-128到127.共256个数。刚好可以用一个字节(8位)表示出来(2^8=256);
其实,1111 1 ...

好厉害~
作者: mycoder    时间: 2016-3-8 22:36
因为byte占2个字节所以取值范围是2的8次方
作者: xiongjin1991    时间: 2016-3-8 22:45
看了原,反,补才弄清楚,谢谢大家
作者: 天赐潇潇    时间: 2016-3-9 00:43
因为计算机是使用二进制俩存储数据的,意思的1位数据表示两个状态(或者说是两个数),就是0或1,那么两位数据就表示四个状态,一次类推,8位数据就表示2^8个状态,也就是256个状态(数),而Byte正好是规定为8位且规定Byte的数据类型是表示整数的,那么它就只能表示256个整数。
作者: skxy2016    时间: 2016-3-9 09:37
一个字节占8位,每个位用1或0表示,8位就有2的8次方种可能,就是256,首位代表符号位,那么均分两半,负数一半正数一半,刚好一边是128个数,因为正数有0,所以是-128~127.(只是个人理解,如有不妥之处请指出讨论)
作者: ccyabc    时间: 2016-3-9 10:07
友人A 发表于 2016-3-8 12:38
我纠正一下层主的意思:-128到127.共256个数。刚好可以用一个字节(8位)表示出来(2^8=256);
其实,1111 1 ...

这个很全了,很值得借鉴,
作者: sdtzyangshuwen    时间: 2016-3-9 10:55
一个字节 八个二进制位。 左边第一位代表的是符号 所以是负的 到正的。1000 0000 = -000 0000 = -128
作者: huangkai521    时间: 2016-3-9 20:07
byte占用的是一个字节,即8位,整数又有正数和负数,所以是从-128到127
作者: sl943508135    时间: 2016-3-9 21:07
二楼  学习了
作者: joubin    时间: 2017-4-15 23:24
mycoder 发表于 2016-3-8 22:36
因为byte占2个字节所以取值范围是2的8次方

byte是占1个字节
作者: joubin    时间: 2017-4-15 23:28
友人A 发表于 2016-3-8 12:38
我纠正一下层主的意思:-128到127.共256个数。刚好可以用一个字节(8位)表示出来(2^8=256);
其实,1111 1 ...

层主这样用补码来解释,就很好理解了。666




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2