异或算法求解!

q2104574 2014-10-09 03:26:31
int a=10;
int b=5;
a=a^b;

10的二进制+5的二进制 遇00得0,11得0,10得1
结果a=15

跟以下这个为何会一样,为何不直接用这个
a=a+b
...全文
111 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
q2104574 2014-10-15
  • 打赏
  • 举报
回复
谢谢楼上各位大牛们!,理解了,原来那个是凑巧相等的 --
shawn_yang 2014-10-09
  • 打赏
  • 举报
回复
引用 7 楼 Z65443344 的回复:
哦,你的意思是,每一位都没有进位才行,是这个意思吧
对。 所以叫半加器,就是因为没有进位的考虑
shawn_yang 2014-10-09
  • 打赏
  • 举报
回复
引用 6 楼 Z65443344 的回复:
异或==半加器?? 9^5=12 9+5=14 1001 0101 这根本没有进位好吧
1001+0101没有进位吗?你2进制怎么学的?
於黾 2014-10-09
  • 打赏
  • 举报
回复
哦,你的意思是,每一位都没有进位才行,是这个意思吧
於黾 2014-10-09
  • 打赏
  • 举报
回复
异或==半加器?? 9^5=12 9+5=14 1001 0101 这根本没有进位好吧
shawn_yang 2014-10-09
  • 打赏
  • 举报
回复
半加器,没有进位 如果有进位就不一样了 1010+0101=1111 如果是有进位 1010+0111 你看看异或是几 全加法是几
於黾 2014-10-09
  • 打赏
  • 举报
回复
结果一样,不过是巧合罢了 好比2+2=2*2 那为什么要发明乘法,都用加法不行?
  • 打赏
  • 举报
回复
晕! 如果 a=12,b=5,你以为 a^b 会等于 a+b 吗?
於黾 2014-10-09
  • 打赏
  • 举报
回复
你把10换成11,结果还一样吗?
  • 打赏
  • 举报
回复
因为a=a+b在某些类型下会导致溢出

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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