byte(128)为什么是-128? 众所周知,计算机中存储的都是二进制的补码,而原码,反码,补码的关系如下: 网上大部分的资料都是如此讲述,而实际上,负数的补码还可以这么求(必须确定是负数): 将负数的绝对值的原码整体(包括符号位)取反,再整体加一 虽然看起来两个方差不多,但是用第二种方式却能很好避免一些问题,请看...
-128— -1(共128个数) (这里是关键,0和-0不是同一个数,也就是说-0的补码用来表示-128了,-0的补码"10000000"通过逆向计算刚好得到-128这个值) 正数和0一共128个 负数128个 刚好满足2^8=256个数 所以byte的范围是-128——127!!! 由此其他类型的范围也可推出。 __EOF__...
Byte数据类型一共有8位,如果是无符号数,最大可以表示的数为11111111 = 256 -1 = 255 无符号数代指不需要符号指明就可以知道它是什么数值大小。如果知道范围是正数和0的话,范围确实是0~255了 可是我们的byte除了存储正数、0还需要存储负数。因此需要一个位置装载符号位。因此我们留出一个位置装符号位,其他位置存...
首先,需要理解byte类型是一种8位二进制补码整数数据类型,它可以表示的整数范围为-128到127。为了更好...
1、 128为int整数32位,前24为全部为0 后8位是1000 00002、(byte)128 转型为byte后首位是1,java认为是负数的补码标识3、 在System.out.println调用时,java类型系统会自动将byte类型转换为int,此时进行的是有符号左移操作,前24位全部为1,后8为位1000 0000,仍然是-128.4、所以输出的为-128 tip:java在做...
我们都知道java 的byte占4个字节,1个字节8位。而计算机表示数据都是以二进制的形式表示。那么一个byte表示的二进制应该为0000 0000 -1111 1111,又因为最高位代表符号位,那么一个byte表示的范围就应该为(-2^7-1)-(2^7-1)即-127到127怎么会有-128呢?其实也没有什么好说的,这就是规定的,包括short,...
1、 128为int整数32位,前24为全部为0 后8位是1000 00002、(byte)128 转型为byte后首位是1,java认为是负数的补码标识3、 在System.out.println调用时,java类型系统会自动将byte类型转换为int,此时进行的是有符号左移操作,前24位全部为1,后8为位1000 0000,仍然是-128.4、所以输出的为-128 tip:java在做...
因为byte最大是127,根据计算机计算原理,如果超出,他会返回到一个最小的值上去,即:-128 这个就好像是一个数字环境,数字环的结构式这样的:-128,-127,-126,...0,1,2,3,...126,127,-128,-127,-126 大致意思就是这样 楼主采纳我的答案吧..哈哈哈 ...
byte类型的取值范围为-128到127,因为它是一个8位的有符号整型、并采用二进制补码形式表示这个范围内的数值。在Java中,byte类型所能表达的最大数值是由其位数决定的,一个byte占8位(bit),第一位为符号位,剩下的7位表示数值。采用二进制补码的方式,能够使得-128到127之间的整数都能被表示出来。
对于byte来说就是七位,七位正数最大的就是1111111 转换成十进制就是127,从 2的0次方加到2的6次方。 然后负数呢,涉及到负数的编码方式: 这里模是256,所以10000000到11111111其实表示的范围是-128到-1 因为10000000是128,补数是-128,11111111是255,补数是-1。