int类型强制转换为byte是如果超出之后怎么办
int类型为32bit
byte类型为8bit
举个栗子
int a = 800;
byte b = (byte)a;
//打印b结果为什么?结果为32
int a = 1000;
byte b = (byte)a;
//打印b结果为什么?结果为-24
分析
800 转换为二进制数为1100100000
因为byte为8bit 所以只能取后8位 及取到的结果为:00100000
第一位代表正负 0代表是正数,1代表为负数
所以00100000的补码是本身 100000转换为十进制的为32
1000转换为二进制数为1111101000
转为byte取到的结果为11101000
第一位为1代表为负数
所以11101000的补码为11000 转换为十进制的为24 本身为负数
原码转补码
反码:负数原码按位取反(符号位不变)。正数原码本身。
补码:正数是原码本身。负数反码加1。
- 原码:11101000
- 反码:10010111
- 补码:10011000(反码+1)