计算机中Byte的范围是如何计算的?

在这里我们需要先了解另一个单位:bit “比特”,bit是计算机进行数据存储的最小单位,计算机内部利用二进制存储数据,一bit(比特)就代表一位二进制。即一个bit就代表一个0或1。

而Byte(“字节”)是计算机进行数据存储的基本单位。一Byte有八位二进制也就是1Byt = 8bit

数据的存储又分为有符号和无符号数,有符号数二进制的最后高代表符号,0代表+(正),1代表-(负),如:有符号数011 转换为十进制为2^0+2^1=3,无符号111转换为十进制则为-3。(有下划线的数字代表符号位,后面同样如此)

然后我们开始正式介绍Byte范围的计算

当Byte无符号时

Byte的范围可以由二进制表示为 0000 0000 ~ 1111 1111,

将二进制转化为十进制:

0000 0000 = 0;

1111 1111 = 2^0+2^1+2^2+2^3+2^4+2^5+2^6+2^7 = 255;

所以Byte的取值范围为 0 ~255 。

当Byte有符号时

由于最后一位变为了符号位 所以0 1111111成了最大的数。

将二进制转化为十进制:

0 1111111 = 2^0+2^1+2^2+2^3+2^4+2^5+2^6 = 127;

负数需要用补码表示,1 1111111的绝对值取反得到0000000 转换为十进制为 0加一取反则为补码 :-1

将1 0000000的绝对值取反得到11111111 转换为十进制为 127

再加一取反为 -128

所以Byte有符号时的取值范围为 -128~127

java采用的有符号存储,所以java中Byte的取值范围采用有符号时计算。