关于学习中对整形提升的整理
为何要进行整形提升?
通常,表达式要进行整形计算时在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;
不要忘记计算过程中一直使用的是补码,最后若要返回真实看到的值应变为原码。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
