| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 822 人关注过本帖, 1 人收藏
标题:新手求教关于2进制,8进制,16进制转换的问题
只看楼主 加入收藏
xu5187256
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-8-17
结帖率:100%
收藏(1)
已结贴  问题点数:20 回复次数:10 
新手求教关于2进制,8进制,16进制转换的问题
各位大神好,本人正在自学c语言,今天碰到难题了,想了N久没想明白问题出在哪了,所以在这求教各位大神。
为题如下:
下面的程序就是我输入到vc6.0里面去的
#include<stdio.h>
void main()
{ int a=-1;

printf("%x,%d,%o",a,a,a);
}
调试结果本应该是:ffff,-1,177777
但我在电脑上得到的结果却是ffffffff,-1.37777777777
找不出问题所在,在这球解。
帮帮小弟。
万分感激!!!!
搜索更多相关主题的帖子: ffffffff 
2012-08-17 15:38
xu5187256
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-8-17
收藏
得分:0 
自己顶
2012-08-17 15:43
silent_world
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:258
专家分:1138
注 册:2011-9-24
收藏
得分:10 
hehe,-1在内存中就是4个字节的FF
%d可以输出符号,显示为-1正常;
而%x和%o都是显示无符号整数,当然显示内存中的ffffffff和37777777777
2012-08-17 15:46
xu5187256
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-8-17
收藏
得分:0 
回复 3楼 silent_world
谢谢你哈!
嗯,这样的话结果就是那样的。
但我有个疑问我是根据课本上的例题输入的,课本上给出的答案是ffff,-1,177777
这是为什么?
2012-08-17 15:54
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:10 
你所谓的“本应该是”的结果是16位编译器生成的程序的结果,而你电脑上的结果是32位编译器生成的程序的结果。
书太老了

重剑无锋,大巧不工
2012-08-17 15:55
xu5187256
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-8-17
收藏
得分:0 
回复 5楼 beyondyf
那这是跟我电脑的配置或者安装的软件导致的嘛?
谢谢你!
2012-08-17 15:57
stophin
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:227
专家分:618
注 册:2010-3-26
收藏
得分:0 
int类型是4个字节,也就是有4个8位,如1的存储为:
0000 0000 0000 0000 0000 0000 0000 0001
负数的存储是最高位为1,其余位为其正数(不含最高位)的二进制补码加1。
-1就是(下面都是4位一块,共8个块,我省略为4个块):
-1的正数1:
0000 0000 ... 0000 0001
补码:
0111 1111 ... 1111 1110
加1:
0111 1111 ... 1111 1111
最高位为1:
1111 1111 1111 1111 1111 1111 1111 1111
十六进制肯定是8个F没问题。
八进制就是从右边开始3位一组,转换成十进制数字,最高位不够3位补0:
011 111 111 111 111 111 111 111 111 111 111
 3   7   7   7   7   7   7   7   7   7   7
楼主你看看答案是不是10个7呢?
如果是16位编译器,就是
001 111 111 111 111 111
 1   7   7   7   7   7

[ 本帖最后由 stophin 于 2012-8-17 16:05 编辑 ]
2012-08-17 16:01
xu5187256
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-8-17
收藏
得分:0 
谢谢大家了!
2012-08-17 16:04
xu5187256
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2012-8-17
收藏
得分:0 
回复 7楼 stophin
是的。
2012-08-17 16:07
c4fun
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-8-6
收藏
得分:0 
回复 7楼 stophin
呵呵,这样的理解的:负数的二进制形式=源码取反(最高位仍为1,不变)+1
2012-08-18 08:41
快速回复:新手求教关于2进制,8进制,16进制转换的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017094 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved