关于2进制转换8进制的问题。

来源:百度知道 编辑:UC知道 时间:2024/06/16 16:18:37
mian()
{
short i=-4;
printf("dec=%d,oct=%o,hex=%x,unsigned=%u",i,i,i,i);

}
输出的结果是:dec=-4,oct=177774.hex=fffc,unsigned=65532

我的疑问:-4转化为2进制数是10000100,然后再转化成8进制数不就等于"(100)(001)(000)"=410,但是结果又不是这个。
请高手教下我。。thank you
第一个的答案让人郁闷,麻烦你说仔细点嘛。。。

你用的是short,不是unsigned short。。
有符号位的,学学谭浩强版C语言的前三章去吧。

补充:原来你写的是C程序阿,这里涉及到C的自动类型提升的问题。
另外,你计算的“4转化为2进制数是10000100”的长度是不正确的,Short 是2Bytes, 应该是16 Bits,你换成16Bits看看,效果就不一样了阿。符号位会前移,而且使用的补码。