int类型强制转换为byte是如果超出之后怎么取

int类型强制转换为byte是如果超出之后怎么办

int类型为32bit

byte类型为8bit

举个栗子
int a = 800byte b =byte)a;
//打印b结果为什么?结果为32
int a = 1000byte 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)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值