c语言中的位运算符中‘按位取反’是怎么运算的,什么是负数的反码,请各位帮我解释一下!!!

我正学习C语言,遇到了一个难题,就是看不懂里面的位运算符中的‘按位取反’请那位高手帮我解释一下!!!... 我正学习C语言,遇到了一个难题,就是看不懂里面的位运算符中的‘按位取反’请那位高手帮我解释一下!!! 展开
 我来答
aoqijia
推荐于2017-11-24 · TA获得超过587个赞
知道小有建树答主
回答量:379
采纳率:0%
帮助的人:0
展开全部
0001
取反
1110

符号位为1,取反+1为
1010
转化成10进制为
-2

正数的原码,补码,反码都相同,都等于它本身
负数的补码是:符号位为1,其余各位求反,末位加1
反码是:符号位为1,其余各位求反,但末位不加1
也就是说,反码末位加上1就是补码

1100110011 原
1011001100 反 除符号位,按位取反
1011001101 补 除符号位,按位取反再加1

正数的原反补是一样的

在计算机中,数据是以补码的形式存储的:

在n位的机器数中,最高位为符号位,该位为零表示为正,为1表示为负;

其余n-1位为数值位,各位的值可为0或1。

当真值为正时:原码、反码、补码数值位完全相同;

当真值为负时:

原码的数值位保持原样,

反码的数值位是原码数值位的各位取反,

补码则是反码的最低位加一。

注意符号位不变。

如:若机器数是16位:

十进制数 17 的原码、反码与补码均为: 0000000000010001

十进制数-17 的原码、反码与补码分别为:1000000000010001、1111111111101110、1111111111101111
QQ410128746
2007-05-27
知道答主
回答量:17
采纳率:0%
帮助的人:0
展开全部
按位取反运算符~为单目运算符,具有右结合性。 其功能是对参与运算的数的各二进位按位求反。例如~9的运算为: ~(0000000000001001)结果为:1111111111110110
就像楼上说的“简单的说: 1变成0 0变成1 ”
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Nubix
2007-05-21 · TA获得超过244个赞
知道答主
回答量:158
采纳率:37%
帮助的人:49.2万
展开全部
按位取反就是所有位取反。

写出来就是:
a = ~a;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Lovemetender00
2007-05-21 · TA获得超过136个赞
知道答主
回答量:39
采纳率:0%
帮助的人:11.5万
展开全部
简单的说: 1变成0 0变成1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式