C语言题求帮助0 0

若定义unsigneda=31003,b=21103;则表达式啊a^b^b的值为---------------- 答案是31003 于是我想知道a^b... 若定义 unsigned a=31003, b=21103;则表达式啊a^b^b的值为---------------- 答案是31003 于是 我想知道a^b^b是什么意思 为什么=31003 展开
 我来答
冷明珠05v
2012-07-05 · TA获得超过1502个赞
知道小有建树答主
回答量:389
采纳率:100%
帮助的人:546万
展开全部
^ 表示读数据进行按位异或,异或运算法则为:
真异或假的结果是真,假异或真的结果也是真,真异或真的结果是假,假异或假的结果是假。就是说两个值不相同,则异或结果为真。反之,为假。
异或也叫半加运算,其运算法则相当于不带进位的二进制加法:二进制下用1表示真,0表示假,则异或的运算法则为:0异或0=0,1异或0=1,0异或1=1,1异或1=0(同为0,异为1),这些法则与加法是相同的,只是不带进位。

a^b^b= a ^ (b ^ b) = (a ^ b) ^b; 这是异或的运算法则。

a = 111 1001 0001 1011
b = 101 0010 0110 1111
异或得: 010 1011 0111 0100
b = 101 0010 0110 1111

再次异或 111 1001 0001 1011 即与a相同,所以是31003.

可以得出以下结论,一个数与同一个数2次异或结果不变。
可以证明:
1^0=1 1^0=1,两次运算后还是1
0^0=0 0^0=0,两次运算后还是0
1^1=0 0^1=1,两次运算后还是1
0^1=1 1^1=0,两次运算后还是0。证毕。
藏在水中的人
2012-07-05 · TA获得超过990个赞
知道小有建树答主
回答量:474
采纳率:0%
帮助的人:575万
展开全部
a^b表示a和按位异或,相同的位为0,不同为1,两个相同的数“异或”为0,任何数与0 “异或”都不变。因此a^b^b的结果仍为a
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
非突_real
2012-07-05 · TA获得超过330个赞
知道小有建树答主
回答量:501
采纳率:0%
帮助的人:383万
展开全部
^表示异或,1^0 = 1, 1^1 = 0, 0^0 = 0, 0^1 = 1 ,相同就是0,不同就是1,
31003 的二进制是 111100100011011
21103 的二进制是 101001001101111
a^b 的结果是 010101101110100
a^b^b 的结果是 111100100011011 就是31003

其实 不论a,b是多少,都有 a^b^b = a, a^b^a = b
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友968c76d89
2012-07-05
知道答主
回答量:66
采纳率:0%
帮助的人:28万
展开全部
^是个移位符号,所以a移动两次就返回原点啊,应该是往右移位
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式