因为超出了 byte的取值范围,一般我们直接是看不出来这个结果的,要通过计算,,首先在明白 在计算机 数值都是以补码的 形式参与运算 的:
还有 通过 运算 b+=1 虽然 java底层为我们加了 强类型转换 也就是 byte=(byte)(127+1) 其实 是把 int 类型转成了 byte 我们看一下 128 的 原码 因为正数的原码 、补码、反码 都是一样的 128 的补码 是 1000=0000 前面3个8位舍弃 那么 1000-0000 这个补码的 十进制是多少呢? 因为 0的补码是 0000-0000 所以这个 码 中的 1是符位 也是数值 位 高位 1 是负数 因为后7位 全是0 那么 我们从低位 推: 从1位到 8位 如果 位是 1则分别是 1、2、4、8、16、32、64、128 因为后7位全是 0 只有8位是 1 所以 (byte)128=-128 |