永发信息网

关于C语言问题的来、进制之间

答案:3  悬赏:40  手机版
解决时间 2021-05-05 19:35
  • 提问者网友:鐵馬踏冰河
  • 2021-05-05 02:13
-1在内存单元中(补码)形式为: a=-1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 则:int a=-1; printf(”%d,%o”,a,a); 的输出为:-1,177777
最佳答案
  • 五星知识达人网友:醉吻情书
  • 2021-05-05 02:52

1在内存中是16个1,


o% 是以8进制输出的



2进制转化为8进制 从右起每3位转化一个8进制,最前面不足


3位的补0


001 111 111 111 111 111


得 1 7 7 7 7 7


即输出为结果为177777

全部回答
  • 1楼网友:荒野風
  • 2021-05-05 05:25

你在内存以补码的方式存的,以10进制输出当然是-1,没问题,关键是在转换为八进制输出是,前面的-1丢掉了,然后就变成了

  • 2楼网友:末日狂欢
  • 2021-05-05 03:53
八进制是不能表示为负数的,至于为什么为177777,-1在内存中是16个1,十六进制为ffff,而如果把这个数八进制表示就是177777,如你所见。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯