格式输入输出
在《小甲鱼零基础入门学习C语言》中“第三章顺序程序设计”PPT第16页有如下格式输入输出问题:当在编辑器中输入以下代码:
void main()
{
int a=-10;
printf("a=% o\n",a);
}
(其中%与o之间有空格)
代码输出结果为:
请问a的输出值为什么不是-12呢?
楼主,你使用 %o 是以8进制输出。
八进制和十六进制都是补码形式输出 (这是我理解的),所以输出了这个东西。
把上边那个数字 转换成16进制更容易看出来。FFFFFFF6 - 也就是-10的补码
n0noper 发表于 2016-6-20 09:26
楼主,你使用 %o 是以8进制输出。
八进制和十六进制都是补码形式输出 (这是我理解的),所以输出了这个东 ...
soga,理解啦!赞!谢谢你~ f904399233 发表于 2016-6-20 23:19
soga,理解啦!赞!谢谢你~
如果解决了,记得评分 关帖哟~~~ 不知道楼主懂不懂补码
-5的补码是 先求5的二进制代码,如果是int类型占32个字节,那就是00000000000000000000000000001010
按位取反后为
11111111111111111111111111110101
末尾加1
11111111111111111111111111110110这个就是-5的补码
接下来把二进制代码转化为八进制,从右向左,每3个位一组,不够位数前面取0
011,111,111,111,111,111,111,111,111,110,110,
转 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
化 3 7 7 7 7 7 7 7 7 6 6
成
八
进
制
就是这样,懂不懂?? 学习电脑 发表于 2016-6-22 11:41
不知道楼主懂不懂补码
-5的补码是 先求5的二进制代码,如果是int类型占32个字节,那就是000000000000000 ...
理解啦~3Q 那就好
页:
[1]