2、 c为178
原码:1011 0010
补码:1011 0010
%d输出的时候按c的类型,有符号数进行高位符号位识别,最高位1被视为符号,%d接受整数数据,故对c补码向左补24bit的符号位,即1111 1111 1111 1111 1111 1111 1011 0010,以确保符号不变,由新补码反推原码,原码为1000 0000 0000 0000 0000 0000 0100 1110即-78.
%u输出的时候依旧将其补充至4byte,左24bit依旧补符号位置,但进行反推原码时,因%u为无符号输出,故对原码赋值补码:1111 1111 1111 1111 1111 1111 1011 0010,故结果为4294967218
d的原码:1000 1001
补码:1111 0111
%d输出的时候按d的类型无符号,故最高位非符号位,将其补至4byte时,左边补0,故打印出247
%u输出的时候按d的类型无符号,依旧是无符号位置,左补0至4byte,结果与%d无区别,故打印247.
3、-57:
原码:1111001
反码:1000110
补码:1000111