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

 我来答
283802332
2012-09-16 · TA获得超过3311个赞
知道小有建树答主
回答量:367
采纳率:0%
帮助的人:214万
展开全部
  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
wangnasa
2012-09-16 · TA获得超过777个赞
知道小有建树答主
回答量:732
采纳率:100%
帮助的人:691万
展开全部
-64
以两个字节Int为例 win32位int 占四个字节 写起来太麻烦
a 是用符号整型变量 二进制存储八进制77 为 最高位为符号位为0000000000111111
~取反 后最高位为1111111111000000
因为负数在计算机内以补码形式存放
所以转回原码
先取反 但是符号位不变
1000000000111111
再加1
1000000001000000
十进制显示 为-64
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
温情时光剪影
2012-09-16 · TA获得超过1634个赞
知道小有建树答主
回答量:607
采纳率:33%
帮助的人:254万
展开全部
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1751129749qw
2012-09-16
知道答主
回答量:6
采纳率:0%
帮助的人:9932
展开全部
什么、
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式