标题:问关于八进制负数输出问题
只看楼主
苡木之心
Rank: 1
等 级:新手上路
帖 子:7
专家分:6
注 册:2016-5-12
结帖率:0
已结贴  问题点数:20 回复次数:5 
问关于八进制负数输出问题
如果into a=-14,理论上用八进制输出结果是-16,但结果却是177762,知道这个是因为补码问题,但详细的并不太清楚,有哪位大神能讲讲具体内容么,还有想要输出那个负数该怎么办(不行直接在printf()引号里加符号)。
搜索更多相关主题的帖子: 八进制 
2016-05-12 23:07
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:4 
让我们看看C标准文档是怎么规定的
o,u,x,X   The unsigned int argument is converted to unsigned octal(o), unsigned decimal(u), or unsigned hexadecimal notation(x or X) in the style dddd;
看清楚了unsigned int吗?
2016-05-13 08:44
贝壳中的沙子
Rank: 1
等 级:新手上路
帖 子:4
专家分:4
注 册:2016-5-13
得分:4 
我也不太懂,还有十六进制也是十进制-1变十六进制为ffffffff怎么换算的不怎么懂
2016-05-13 20:18
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:4 
有符号32位
2016-05-13 20:39
骆驼的眼泪
Rank: 2
等 级:论坛游民
帖 子:6
专家分:19
注 册:2016-5-7
得分:4 
#include<stdio.h>
int main()
{
int a;
 a= -14;
printf("%d\0",a);
return 0;
}
2016-05-15 12:43
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
得分:4 
对于16位的int,int a=-14在计算机中被编码为11111111 11110010(采用补码最高位被作为符号位),转换成八进制每三位对应一位八进制位,不足的左边补0,所以对应过来为177762。32位机器为37777777762。
还有八进制都是无符号的,不能用八进制保存或计算一个负数。

未佩好剑,转身便已是江湖
2016-05-15 13:27



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




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

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