一道关于c的二级题,希望哪位略施一二。

来源:百度知道 编辑:UC知道 时间:2024/06/09 18:08:51
a=-4;用以下格式输出结果是什么??pirntf("%d,%o,%x",a,a,a);
虽然知道答案,可是不知道为什么呀,能给的详细点吗?谢谢

#include<stdio.h>
main()
{int a=-4;
printf("%d,%o,%x",a,a,a);
}
用tc运行下吧。
答案:-4,177774,fffc
补充:
首先在计算机中负数用补码表示,按一般的TC用的都是16位二进制表示的所以有
[-4]补=1111,1111,1111,1100
1. %d表示按十进制整型数据的实际长度输出。这里a=-4所以第一个输出的就是-4;
2. %o表示按八进制整数形式输出。按上面的补码将其转换为八进制就是177774,转换时注意技巧就是每三位二进制转换为一个八进制数。

3. %x表示按十六进制行驶输出整数。按上面的补码转换为十六进制就是ffffc,转换时每4位二进制转换成一个十六进制。

-4,177774,fffc

-4,177774,fffc