两个二进制数异或的结果是什么?

W1196344302 2012-07-14 11:52:59
两个二进制数异或的结果是什么?
...全文
1022 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zwz_home 2012-09-06
  • 打赏
  • 举报
回复
异或后的结果为两个数化成二进制后不同位的和。举个例子,16(10000)异或15(01111),五位都不同,所以结果为五位的和,即五位要全为一:11111=31。话说这个有什么作用呢?看了下面的例子,我也才明白这个在笔试中的作用。下面代码:
int f( int x, int y )
{
return ( x&y )+( ( x^y )>>1 )
}
问:f(729,271)=??
本题可以按照所谓的“笨方法”来做。按照上面的分析,我们知道x^y是729和271不同位的和,右移一位,就是除2。而x&y呢?你可以按照我刚分析的x^y就可以知道x&y是取x和y相同位的和的一半。所以上面的return返回的是x和y相同位的一半加上不同位的一半,就是x和y和的一半啦。即f(729,271)=(729+271)/2=500
Qyee16 2012-07-15
  • 打赏
  • 举报
回复
异或的结果 还是二进制。。哈哈

相同的位为0,不相同的位为1。

可以看,哪些位二进制位是不同的嘛。

具体使用环境,那就看使用的目的了。
pathuang68 2012-07-15
  • 打赏
  • 举报
回复
所谓异或,即模2加:相同的位为0,不相同的位为1,这是最基本的概念。

比如8和10的异或:
1000 (8)
1010 (10)
=====
0010 (2)

所以8异或10=2

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧