* int to byte
* 计算机存储数据是以补码的形式。
* 比如int 255的原码是24x0 11111111
* 由于正数的补码=原码,所以也是24x0 11111111
* 当其强转成byte,截取为8位,即为11111111
* 首位为符号位,补码为11111111
* 原码转换为补码为保留符号位,其他位取反,然后加1。
* 所以补码转换为原码即为,减1,保留符号位其他位取反。
* 即11111111的原码为10000001,即为-1。
* 所以(byte)255,为-1。
*
* byte to int
* 依然拿255举例。
* (byte)255的值为-1,所以强转为int,(int)(byte)255值不变,依然为-1
* 其补码为24个1 111111111
* 我们要将其转换为255,那么就要将11111111,作为无符号位转换。
* 顾要将int只保留低8位,顾将int与0xFF,因为0xFF是正数,所以其原码即为补码
* 为24个0 111111111,int与上0xFF将只会保留低8位,即为byte数值无符号位的值。
* 同样,其他byte无符号位的语言中,我们都可以将byte转成int保留低8位的结果,即为byte无符号位的值
* 这也为什么解释了,当我们使用类似,byte b=(byte)255的代码,传递byte给到byte范围是0-255的语言,处理结果是正确的。
* 因为int截取低8位,就是byte无符号位的数值。