作业题目
1.请计算90的十六进制形式_________。 printf("%#x\n", 90) %#x以16进制形式打印整数
2.请计算-90的十六进制形式_________。 printf("%#x\n", -90);
3. char型数据在微机中储存值为0xc0,则printfl以%d 打印值为_________(要求写出运算过程)
4. int a = 10, b=20;要求编写一段程序,结束后,a=20,b=10 (三杯水交换)
解析:
1.请计算90的十六进制形式____0x5A_____。 printf("%#x\n", 90) %#x以16进制形式打印整数
数值90的源码、反码、补码:
源码:01011010
反码:01011010
补码:01011010
因为90是一个整数,所以源码、反码、补码一致。
90的十六进制数为 0x5A
用pringf("%#x\n",90)打印
结果为
2.请计算-90的十六进制形式___0xa6______。 printf("%#x\n", -90);
首先,需要将-90转换为补码表示
数值-90的源码、补码、反码为:
源码:11011010
反码:10100101
补码:10100110
因为数值-90,是一个负数,所以,符号位数不动,其余位数取反
-90的十六进制形式为 0xa6
编译结果为
3.char型数据在微机中储存值为0xc0,则printfl以%d 打印值为____-64_____(要求写出运算过程)
0xc0的二进制形式:11000000
最高位符号位为1,为负数
将0xc0转换成十进制: 0xc0 = 12 * 16 + 0 = 192
确定符号位并计算数值:
根据有符号字符型的规则,11000000的最高位是1,表示负数。剩余位(1000000)的值是64。 因此,负数的值为 - (128 - 64) = -64
所以,0xc0作为有符号字符型数据在打印时,应该打印为 -64
4. int a = 10, b=20;要求编写一段程序,结束后,a=20,b=10 (三杯水交换)
程序如图所示:
编译结果如图: