c语言按位取反~

a=4;c=~a;弄出来c是多少具体是怎么算的谢谢... a=4;
c=~a;

弄出来c是多少 具体是怎么算的 谢谢
展开
 我来答
AM蘑菇a13
2011-06-21 · TA获得超过1616个赞
知道小有建树答主
回答量:703
采纳率:0%
帮助的人:193万
展开全部
-5
首先我们现在的机器是32位的(楼主可以不必要理会)
所以4的二进制为
0000 0000 0000 0000 0000 0000 0000 0100
而它的取反是
1111 1111 1111 1111 1111 1111 1111 1011
可以发现最高位是1,所以是负数(因为是int型,如果是unsigned就不能说是负数)。
但是,还要通过补码的形式进行输出(谭浩强第二章有说)
补码是:按位取反再加1
所以也就是把1111 1111 1111 1111 1111 1111 1111 1011再取反
成0000 0000 0000 0000 0000 0000 0000 0100
然后再加1
就成0000 0000 0000 0000 0000 0000 0000 0101
所以得到答案为-5
黒木4312
推荐于2017-10-10 · TA获得超过788个赞
知道小有建树答主
回答量:371
采纳率:0%
帮助的人:498万
展开全部
对于16位机子,4的2进制表示如下
00000000 00000100
取反后为
11111111 11111011
即-5

验证如下
#include <stdio.h>
int main()
{
int a=4;
int c=~a;
printf("%d\n",c);
}
输出结果为
-5
请按任意键继续. . .
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式