关于学习中对整形提升的整理

为何要进行整形提升?

     通常,表达式要进行整形计算时在CPU的相应计算器内执行,cpu内整形运算器的操作数的字节长度一般为int的字节长度(CPU通用寄存器的程度。

   因此,当发生类型为不满足整形操作数字节(如short或者char)相加等运算时或者比较不同数据类型的相等判断比较时,cpu需要转换成整形操作数的标准长度。

 通常cpu难以实现两个为8比特字节直接运算,所以,当出现计算表达式中各种长度小于整形长度,必须进行到int和unsig int的转化。

  如何整形提升?

char a,b,c;a=b+c; 

  以char型为例,若进行char型 b与c的运算,b和c被提升成整形二进制形式,然后再执行加法,完成运算后,结果所得的二进制位数将被截断成所被赋值的操作类型。

char c1=-1;

负数的整形提升

变量c1的二进制位(补码)中只有8个比特位

1111111111111111

因为 char为有符号型‘,所以整形提升后,高位补充符号位,即1;

提升后的结果为

11111111111111111111111111111111

正数的整形提升

char c2=1

c2的二进制位(补码)只有8个比特

00000001

因为 char为有符号型‘,所以整形提升后,高位补充符号位,即0;

提升后的结果为

00000000000000000000000000000001

无符号型整形提升,高位统一补0;

不要忘记计算过程中一直使用的是补码,最后若要返回真实看到的值应变为原码。


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部