C语言中,%o八进制输出,怎么算的,能说具体吗?
有道例题说inta=-1;printf("%d,%o",a,a);结果是-1,177777还说了补码形式1111111111111111大致只感觉他为了说明符号会被算尽八...
有道例题说
int a=-1;
printf("%d,%o",a,a);
结果是 -1,177777
还说了补码形式
1 111111111111111
大致只感觉他为了说明符号会被算尽八进制,但我看不懂怎么算的,谢谢啦
这个是什么?有点看不懂 展开
int a=-1;
printf("%d,%o",a,a);
结果是 -1,177777
还说了补码形式
1 111111111111111
大致只感觉他为了说明符号会被算尽八进制,但我看不懂怎么算的,谢谢啦
这个是什么?有点看不懂 展开
5个回答
展开全部
(1 111 111 111 111 111)2=(177777)8
说明,从右向左,将二进制3位一组,每一组对应一位8进制,111对应7。
说明,从右向左,将二进制3位一组,每一组对应一位8进制,111对应7。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
计算是用位计算
比如:
十进制8换成2进制:00 001 000
然后从右到左3位一组,每组按2进制换十进制算,得10(逢八进一),应为8进制不允许出现8及以上的所以,取3位
比如:
十进制8换成2进制:00 001 000
然后从右到左3位一组,每组按2进制换十进制算,得10(逢八进一),应为8进制不允许出现8及以上的所以,取3位
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为计算机里负数全是补码的形式,没有正码,所以-1其实在计算机里是以补码的形式出现的。
负数的补码计算法则如下:
-1,其实就是 1 000000000000001 第一个1为符号位,1代表“-”号,0代表“+”号,
后面的是数值,为1,求它的补码,先将数值部分取反,符号位不变,就变成 111111111111110,在对新的数值部分加1,就变成111111111111111
了,换算成八进制就是77777,再把前面的符号位加上,就是:
177777了。
至于补码规则为什么是取反加1呢,计算机就是这么规定的。
负数的补码计算法则如下:
-1,其实就是 1 000000000000001 第一个1为符号位,1代表“-”号,0代表“+”号,
后面的是数值,为1,求它的补码,先将数值部分取反,符号位不变,就变成 111111111111110,在对新的数值部分加1,就变成111111111111111
了,换算成八进制就是77777,再把前面的符号位加上,就是:
177777了。
至于补码规则为什么是取反加1呢,计算机就是这么规定的。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询