| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1005 人关注过本帖
标题:关于C中进制的问题
只看楼主 加入收藏
xingjing314
Rank: 2
等 级:论坛游民
帖 子:160
专家分:32
注 册:2007-1-23
结帖率:94.74%
收藏
 问题点数:0 回复次数:6 
关于C中进制的问题
int a=1,int b=-1;
printf("%d,%d,%u,%u,%o,%o,%x,%x\n",a,b,a,b,a,b,a,b);
输出结果为:1,-1,1,65535,1,17777,1,ffff。



65535,17777,ffff是如何计算得出的?


但若a=1,b=1时输出结果都为1,又是为什么那?
搜索更多相关主题的帖子: 进制 int ffff 结果 输出 
2007-01-28 10:52
走刀口→超
Rank: 6Rank: 6
等 级:贵宾
威 望:20
帖 子:5018
专家分:0
注 册:2006-3-14
收藏
得分:0 

丑...

[此贴子已经被作者于2007-1-28 12:25:05编辑过]


人在江湖【走】,怎能不挨【刀】;为了能活【口】,唯有把己【超】!come on...
2007-01-28 11:07
hiaod
Rank: 1
等 级:新手上路
威 望:1
帖 子:66
专家分:0
注 册:2007-1-25
收藏
得分:0 
在计算机中所有信息都是用二进制数编码来表示的,数字也不例外。正负符号也进行了数字化:编码的最高位用来表示符号,正数最高位为0,负数为1;正数的编码就是将这个数转换成二进制数然后在前面加0,补足到规定编码的位数,而负数却是用补码来表示的。要求一个负数的补码,可先求出它的相反数的编码,然后逐位取反,末位加1。
在C中,int类型一般用16位二进制表示,它的取值范围为-32768~+32767。例如1,在C中的编码就是0000000000000001;而-1的编码是:1111111111111111。
当把int 的-1当作无符号数输出时,就变成了65535,当作八进制数输出时,就成了:177777;当作十六进制数时:ffff。
2007-01-28 11:55
wanglff
Rank: 2
等 级:新手上路
威 望:5
帖 子:375
专家分:0
注 册:2005-12-21
收藏
得分:0 

数据在计算机的存储是通过它的补码形式存储
知道这点后就明白上面的结果了

[此贴子已经被作者于2007-1-29 8:15:50编辑过]


自强不息:)
2007-01-28 14:20
xingjing314
Rank: 2
等 级:论坛游民
帖 子:160
专家分:32
注 册:2007-1-23
收藏
得分:0 

谢谢大家了


2007-01-28 15:23
hiaod
Rank: 1
等 级:新手上路
威 望:1
帖 子:66
专家分:0
注 册:2007-1-25
收藏
得分:0 
4楼回答错了,应该是补码,而不是反码。
2007-01-28 18:56
wanglff
Rank: 2
等 级:新手上路
威 望:5
帖 子:375
专家分:0
注 册:2005-12-21
收藏
得分:0 

哦对

说错了
呵呵真对不起


自强不息:)
2007-01-29 08:15
快速回复:关于C中进制的问题
数据加载中...
 
   



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

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