byte的取值范围是-128 ~ 127
8个位的第一个位是符号位:
0000 0001 为 1
1111 1111 为 -1
最大正数为0111 1111 为127
最大负数为1000 0000 为-128
进行隐式转换时
byte i = 128
这样是错误的,因为超出了byte的取值范围.
所以我们要做强制类型转换:
byte i = (byte) 128 值为-128
byte i = (byte) 255 值为-1
原因就是当(byte)128的时候,其实是先把128转换为int再转换为byte所以变成-128了
好像是用负数的补码 是他的十进制表示形式,正数的补码还是它本身
补码计算规则是 个位取反加1