C语言 - 20230426
一. 思维导图
二. 练习
1.有以下变量求输出结果
signed char c = 178;
printf(“%d\n”,c);
printf(“%u\n”,c);
unsigned char d = -9;
printf(“%d\n”,d);
printf(“%u\n”,d);
并写出数据存储和取出的过程
1)signed char c = 178;printf(“%d\n”,c);
step1: 178转二进制: 1011 0010
输入原反补: 1011 0010
输出反: 1011 0001
输出原: 1100 1110
step2:输出%d
11001110
第一位1表示负号。
01001110 = 2的1次方 + 2的2次方 + 2的3次方 + 2的6次方
= 2 + 4 + 8 + 64
= 78
最终输出-78
2)signed char c = 178; printf(“%u\n”,c);
c=-78
输入原码:1000 0000 0000 0000 0000 0000 0100 1110
输入反码:1111 1111 1111 1111 1111 1111 1011 0001
输入补码:1111 1111 1111 1111 1111 1111 1011 0010
输出补码:1111 1111 1111 1111 1111 1111 1011 0010
输出反码:1111 1111 1111 1111 1111 1111 1011 0010
输出原码:1111 1111 1111 1111 1111 1111 1011 0010
0xFFFFFFB2
最终输出:4294967218
3) unsigned char d = -9;printf(“%d\n”,d);
输入原码:1000 1001
输入反码:1111 0110
输入补码:1111 0111
输出原,反,补:0000 0000 0000 0000 0000 0000 1111 0111
最终输出:247
4)unsigned char d = -9;printf(“%u\n”,d);
输入原码:1000 1001
输入反码:1111 0110
输入补码:1111 0111
输出原,反,补:0000 0000 0000 0000 0000 0000 1111 0111
最终输出:247
2.求-57的原码,反码,补码
原码: 1011 1001
反码: 1100 0110
补码: 1100 0111