关于C语言的位运算~的问题,求助!

#include<stdio.h>intmain(){intx=11,y;y=~x;printf("%d",y);return0;}x00001101y11110010为... #include<stdio.h>
int main()
{
int x=11,y;
y=~x;
printf("%d",y);
return 0;
}
x 00001101
y 11110010
为什么输出y是-14??~是取补码,对应10进制是怎么对应的??
求助大神!!!!
展开
 我来答
呐伤谁聆听day
2019-03-25 · TA获得超过732个赞
知道小有建树答主
回答量:1061
采纳率:67%
帮助的人:311万
展开全部
int里第一位是符号位,0代表正数,代表负数。并且正数用原码储存,负数用补码储存(这样做是能将二进制加法与减法统一,自己悟一下,很高明的方法)。11110010 第一位是1 所以是负数,所以是补码。补码转原码要取反加一(除了符号位),所以取反10001101。再加一10001110 就是-14了。手机打字,希望你能理解。具体的搜索关键字补码来学习就行。望采纳
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cc209113850
2019-03-25 · 超过51用户采纳过TA的回答
知道小有建树答主
回答量:94
采纳率:72%
帮助的人:20.1万
展开全部
x = 11 -> 0000 1011
~x -> 1111 0100
负数以补码方式存储的,要换算成十进制,先把1111 0100取反(除开符号位),再加1,这时为1000 1100 (1000 1011 + 1),为-12。
大概是这样,你再具体查下补码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shine1991
科技发烧友

2019-03-25 · 智能家居/数码/手机/智能家电产品都懂点
知道顶级答主
回答量:4.7万
采纳率:82%
帮助的人:2.3亿
展开全部
第一,输出的是-12
第二,~是二进制取反,不是取补码
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式