哪个能不能帮我解读一个程序呀,?

来源:百度知道 编辑:UC知道 时间:2024/06/04 17:56:45
#include "stdio.h"
void main()
{
int x,y,z;
x=-129 ,y=-0127, z=-0x128;
printf("%d,%d,%d\n",x,y,z);
printf("%o,%o,%o\n",x,y,z);
printf("%x,%x,%x\n",x,y,z)"
}
运行结果
-129,-87, -296
177577,177651,177330
ff7f, ffa9, fed8
我要问的是,为什么运行结果的后两排的负号不见了呢?它们不是分别由八进制和十六进制输出吗?怎么不见了的呀.如果x,y,z前面没有负号,又会有什么不同呀?
另外就写程序的一般格式是怎么样的呀,是不是前面都要有一个void mian()呀?

首先要理解数的机内码表示方式,还要知道原码,反码,补码的概念。
大多数的机器,数字在机器内部以补码的形式存储。对于补码编码,正数的补码等于原码,负数的补码等于对应的正数的反码加一,即原码按位取反后加1。
比如说在16位字长的机器里-129的表示方法,129的转化为二进制
0000000 10000001 再取反
1111111 01111110 加一
1111111 01111111
用十六进制表示就是ff7f
所以ff7f就已经表示负数了,如果129应该是0x81
ps:你的机器怎么还是16位啊 够老的了 :P

你这个是什么程序啊?有头无尾的……
指明输出!cout<<????????????????????????????????