#include<stdio.h>
int main(void)
{
/*
表达式中的字符和短整型操作数在使用之前被转换为普通整型,这种转换称为“整型提升”。
首先,我们需要知道整型提升的规则:
1.若是有符号数,则前面8*3位补符号位。
2.若是无符号数,则前面面8*3位补0。
*/
char a=3;//00000011
//00000000 00000000 00000000 00000011
char b=127;//01111111
//00000000 00000000 00000000 01111111
char c=a+b;
//00000000 00000000 00000000 10000010
//10000010 c是char 类型发生截断
printf("c=%d",c);//-126
/*
打印整型,整型提升
计算机中存放的是数据的补码
正数的原码=补码=反码
负数的源反补转换规则:原码->反码:符号位不变,其他位按位取反。
反码->补码:反码+1;
*/
//11111111 11111111 11111111 10000010 补码,负数存放的是补码
//11111111 11111111 11111111 10000001 反
//10000000 00000000 00000000 01111110 原 -126
return 0;
}
关于整型提升与反码补码原码
最新推荐文章于 2025-05-14 10:28:08 发布