请教: 对于整型,^ 计算操作数的按位“异或”,如何理解?

kwklover 2004-11-02 12:07:57
如题

说的好的朋友,还可以加分,以表谢意哦

...全文
217 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoslong 2004-11-03
  • 打赏
  • 举报
回复
帮你顶
一半乐事 2004-11-03
  • 打赏
  • 举报
回复
“对于整型,^ 计算操作数的按位“异或”,如何理解? ”
我想是这样,对于两个操作数按位异或,可以使两个操作数中相同的"位"置为0,不同的"位"置为1。
这样的结果中必然与操作数不同(当然要保证任一操作数不能为0)。这也是异或比“与”或“或”的优点吧。比如
111^011=100;101^100=001//只有这个的结果与原操作数不同
111&011=011;101&100=100
111|011=111;101|100=101
一半乐事 2004-11-03
  • 打赏
  • 举报
回复
说点看法,不一定对:
“一个类型常具有多个可以参与生成哈希代码的数据字段。生成哈希代码的一种方法是使用 XOR (eXclusive OR) 运算合并这些字段。”
这句话的意思是不是这样,使用异或只是生成哈希代码的一种方法。方法本身并不能保证哈希值唯一,要保证哈希值唯一就要保证参与异或的值唯一。比如这个:
public override int GetHashCode () {
return a.GetHashCode() ^ b.GetHashCode() ^ c.GetHashCode();
}
kwklover 2004-11-03
  • 打赏
  • 举报
回复
to:hanxue1983(寒雪)
概念和一些简单的应用

我也是在学需要重写System.Object得GetHashCode的时候,里面提到一个使用异或结合属性值来产生哈西码的方式,我想知道为什么这样做可以保证唯一性
icesnows 2004-11-02
  • 打赏
  • 举报
回复
异或,就是当两bit值不同的时候输出1,相同时输出0;这就可以推出在一个为1时,输出结果将为另一位取反,而当一位为0 时,输出结果就等于另一位,从而可以完成楼上仁兄所说的功能;另外,异或用在编码中比较多
hanxue1983 2004-11-02
  • 打赏
  • 举报
回复
你是想知道异或是什么概念,还是想知道怎么实现?
sexfreebird 2004-11-02
  • 打赏
  • 举报
回复
异或:是在两个bit之间发生的计算,只有当两个bit相同即均为0或者均为1的时候结果为1,否则,只要两个bit不同结果就为0,主要用开关,比较是否相等等情况下,主要还要看具体问题,然后再具体分析,开发中会经常遇到这种情况的。
homesos 2004-11-02
  • 打赏
  • 举报
回复
直接用异或,有时可以节省资源的开销,简化程序
一个很简单的例子:
将变量a与变量b换位

a = a ^ b;
b = a ^ b;
a = a ^ b;
kwklover 2004-11-02
  • 打赏
  • 举报
回复
这里会的朋友少,还是不原意来呢?

谢谢上面两位兄弟
cancersyf 2004-11-02
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/library/chs/default.asp?url=/library/CHS/csref/html/vclrfbitwiseexclusiveoroperator.asp

异或:当且仅当两位中有一位是1时候,结果位是1。主要用于开关一个位值。使用方法是对原
有内容进行异或操作,要变换的位为1,保持的为0。例如要变换1,3位,则使用:
0101。

110,539

社区成员

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

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

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