+=赋值运算符与普通运算的不同之处

1.运算符 += 与 正常加法 的区别

 (1)1字节byte=8bit位 (范围-128至127)

 (2)运算规则:自动类型提升(byte(1字节) 、short(2字节)、char(2字节) -> int (4字节)-> long (8字节)-> float(4字节) -> double(8字节)),1字节=8bit。

首先需要了解:byte为什么是-128到127

 计算机中数值表示都是用补码来表示的,为了方便减法的计算(将减法变成加法)产生的补码(补码详解:https://editor.csdn.net/md/?articleId=108949882)

数值原码补码
-128无法表示1000 0000
-1271111 11111000 0001
-1261111 11101000 0010
00000 00000000 0000
1270111 11110111 1111
byte b = 127;
b = b + 1;//报错
b += 1; //-128      
b += 2;//-127
System.out.println(b);

 通过结果可知,正常的运算因超出范围会报错,而+=混合赋值运算符,会使数据类型扩大,127+1= [0111 1111]补 + [0000 0001]补=[1000 0000]补,[1000 0000]补代表-128。同理127+2= [0111 1111]补 + [0000 0010]补=[1000 0001]补=[1111 1111]原= -127。很明显结果并不正确,是按二进制计算所得结果,因此混合赋值运算符,会使数据类型扩大。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值