c++ a&=b a^=b 是什么意思啊
我知道^是按位异或&是按位与的意思可位异或按位与究竟是什么意思啊各位大哥们可否直观点说明一下啊...
我知道 ^是按位异或 &是按位与的意思可位异或 按位与 究竟是什么意思啊各位大哥们可否直观点说明一下啊
展开
6个回答
展开全部
&在C语言中可能表示两种运算符。
如果运算对象只有一个,且为右操作数,那么&为取地址运算符,结果为操作对象的地址。例如&a(假设a是一个左值,即具有具体的可访问的地址)结果为a的地址。
如果运算对象有两个,那么&表示位与运算。结果中的每一个二进制位等于两个运算数的对应位置的二进制位按位与。每一个位的位与运算法则是,当且仅当运算数都为1时结果为1,即:1 & 1 == 1,1 & 0 == 0 & 1 == 0 & 0 == 0。
例如:
char a,b;
a=0xc5;/*a=10100101b;*/
b=0xdd;/*b=11011101b;*/
c=a&b;/*c=10000101b*/
结果是c==0x85。( l18230365 错误,11111101b是位或a|b的结果。)
----
[原创回答团]
如果运算对象只有一个,且为右操作数,那么&为取地址运算符,结果为操作对象的地址。例如&a(假设a是一个左值,即具有具体的可访问的地址)结果为a的地址。
如果运算对象有两个,那么&表示位与运算。结果中的每一个二进制位等于两个运算数的对应位置的二进制位按位与。每一个位的位与运算法则是,当且仅当运算数都为1时结果为1,即:1 & 1 == 1,1 & 0 == 0 & 1 == 0 & 0 == 0。
例如:
char a,b;
a=0xc5;/*a=10100101b;*/
b=0xdd;/*b=11011101b;*/
c=a&b;/*c=10000101b*/
结果是c==0x85。( l18230365 错误,11111101b是位或a|b的结果。)
----
[原创回答团]
推荐于2018-05-14
展开全部
a&=b等价于a=a&b,意思是a、b的二进制码进行每一位的与运算,结果存放在a里面。
a^=b等价于a=a^b,意思是a、b的二进制码进行第一位的异或运算,结果存放在a里面。
a^=b等价于a=a^b,意思是a、b的二进制码进行第一位的异或运算,结果存放在a里面。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是位运算。
a &= b 等价于 a = a & b,
& 是与的关系,你也可以认为是乘的关系
a ^= b 等价于 a = a ^ b
^是异或操作符。取反的意思,具体要有直观的感觉的话,看看谭浩强的C++书上都有的
a &= b 等价于 a = a & b,
& 是与的关系,你也可以认为是乘的关系
a ^= b 等价于 a = a ^ b
^是异或操作符。取反的意思,具体要有直观的感觉的话,看看谭浩强的C++书上都有的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a&=b,等于a=a&b,
举个例子:a=1001,b=1111,那么a&b=1001.所以按位与即:a中第一位(即"1")与b中第一位(即"1")相与,a中第二位(即"0")与b中第二位(即"1")相与。。。
举个例子:a=1001,b=1111,那么a&b=1001.所以按位与即:a中第一位(即"1")与b中第一位(即"1")相与,a中第二位(即"0")与b中第二位(即"1")相与。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-05-25
展开全部
我觉得你应该先搞清什么是位,再来讨论这个问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询