c语言,按位取反。

按位取反运算:inta=16,c=~b;变量c的值是____?求详解。(答案是-17)... 按位取反运算:
int a=16,c=~b;
变量c的值是____?求详解。 (答案是-17)
展开
 我来答
黒木4312
2011-06-21 · TA获得超过788个赞
知道小有建树答主
回答量:371
采纳率:0%
帮助的人:496万
展开全部
对于16位机子,4的2进制表示如下
00000000 00000100
取反后为
11111111 11111011
即-5

验证如下
#include <stdio.h>
int main()
{
int a=4;
int c=~a;
printf("%d\n",c);
}
输出结果为
-5
请按任意键继续. . .
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhaoqibin232
2013-12-25
知道答主
回答量:23
采纳率:0%
帮助的人:9万
展开全部
16(十进制)=0001 0000(二进制)
~16 = ~0001 0000 = 1110 1111
你说的答案是-17 ,如果c是 int型的话第8bit是符号位,也不是你说的答案。
更多追问追答
追问
可能题目错了?~16怎么算?
追答
16(十进制)=0001 0000(二进制)~16 = ~0001 0000 = 1110 1111 你说的答案是-17 ,如果c是 int型的话第8bit是符号位,也不是你说的答案。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
学籽糕
2013-12-25 · 超过22用户采纳过TA的回答
知道答主
回答量:68
采纳率:0%
帮助的人:42.9万
展开全部
你这个问题有点意思,写法就错了,b,c都是整型变量,未知,你却问c的值??
追问
好吧,这个是书上原题,可能错了。
那~16怎么算?
追答
16取反,~16 = ~0001 0000 = 1110 1111
加1等于补码1110 1111 = 1111 0000
计算机显示的时候 还要计算补码变成显示的数字
1111 0000取反加1
第一个1表示负数,不变。最后得来10010001
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
极天异云
2013-12-25 · TA获得超过1054个赞
知道小有建树答主
回答量:1170
采纳率:42%
帮助的人:393万
展开全部
这不是胡闹吗?
a=16, b=? c=~b?
根本就没给出b的值。
更多追问追答
追问
题目错了,大神直接告诉我~16要怎么算吧。
追答
算法楼上已经给出了。
16取反=1110 1111=239 这是8位无符号数
可以把高位扩展到16位,32位
如果有符号数,算上符号位,
就把最高位设置成0,然后看结果前面加负号
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式