c语言问题 char c=127;c=c+100;printf(c=%d,c);我知道这里要求补码
c语言问题 char c=127;c=c+100;printf(c=%d,c);我知道这里要求补码
日期:2021-07-10 23:02:05 人气:1
由于变量C是有符号数,而227超出了它的存储范围,你用%d(有符号数)输出时,它就被看成负数了(227的二进制是11100011),由于负数在内存是用补码存储的,所以输出时要转换成原码:最高位1表示负数,是符号位,转换时不动,其余的先转换成反码10011100,再转换成补码(反码加1)10011101,这就是负数的原码,它的最高位1表示负号,你看看,低五位的11101是不是十进制的29?