标题:输出八进制和16进制为什么不带符号
只看楼主
lzxm160
Rank: 1
等 级:新手上路
帖 子:103
专家分:0
注 册:2006-12-26
 问题点数:0 回复次数:5 
输出八进制和16进制为什么不带符号
int a=-1;
printf("%d,%o,%x",a,a,a);
输出-1,177777,ffff
为什么没有输出带符号的八进制和16进制数
搜索更多相关主题的帖子: 八进制 符号 输出 int ffff 
2007-12-04 22:24
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
得分:0 
带符号?
你输出的八进制和十六进制里就已经含有符号位了,不知道LZ注意到没有

~~我的明天我知道~~
2007-12-04 22:46
xw8687301
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2007-9-17
得分:0 
不明白,八进制和十六进制输出输入需要带符号啊???这里没有,难道是进制位是表示符号!!!
2007-12-04 23:44
mndren
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2007-11-17
得分:0 
前面那个就是符号位
2007-12-05 15:49
gaojing90
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-2-5
得分:0 
这个问题以前也是不太明白,后来来回看书之后就可以理解了。有几点你需要明白。
第一点,数值在计算机中是以补码表示的。
第二点,整型变量的范围是-32768-32767。
第三点,八进制和十六进制的表示属于整型变量。所以范围依然是-32768-32767.
-1的补码是[1111 1111 1111 1111].
10进制的表示结果就是-1.
八进制的表示结果为 【1 111 111 111 111 111 111】=【177777】o
同理十六进制的结果为【1111 1111 1111 1111】=【ffff】h
其实他们显示的结果都是在内存中的存放方式。也就是都是表达着内存中【1111 1111 1111 1111】。不知道你明白了没有
2014-02-05 22:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-190431-1-1.html




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

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