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

    科技2024-05-22  77

    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 001000000 00000000 00001270111 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。很明显结果并不正确,是按二进制计算所得结果,因此混合赋值运算符,会使数据类型扩大。

    Processed: 0.013, SQL: 8