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