永发信息网

#include<stdio.h> main() {int a=077; printf("%d",~a); } 输出结果是什么....清给个详细过程....谢谢~~~

答案:3  悬赏:20  手机版
解决时间 2021-03-27 05:15
  • 提问者网友:半生酒醒
  • 2021-03-27 00:16
#include<stdio.h> main() {int a=077; printf("%d",~a); } 输出结果是什么....清给个详细过程....谢谢~~~
最佳答案
  • 五星知识达人网友:狂恋
  • 2021-03-27 01:36
int a = 077;
声明了一个整型变量a,
它的值是077(八进制)八进制的077 等价于 十进制的63 等价于 二进制的0011 1111B
  printf("%d",~a);
~是取反运算符,即将a中的二进制为1变0,0变1
因为八进制的077 等价于 二进制的0011 1111B,
即a = 0011 1111所以~a = 1100 0000B
1100 0000中的第一个1是符号位,1表示负,0表示正
符号位为后的就是a的数值,然后加上符号位的是正还是负,就得出最终结果
所以printf("%d",~a)将输出-64
PS:若有不明白的地方,可追问追问哦哦~算a的数值的时候不用加上符号位是吧..追答在计算机系统中,数值一律用补码来表示
算a时也要用补码的形式表示,所以算a时要用上符号位,即使a符号位为0追问0.0 那算上符号位了 11000000 不就应该是 1*2的6次方+1*2的7次方了么...
原谅我 C语言学的太差了 =-=追答符号位只计算正负,不参与运算哦,所以是2^6=64 在加上符号位1(负),所以是-64
全部回答
  • 1楼网友:鸠书
  • 2021-03-27 03:15
什么、
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯