^Swift中的操作员
查看哈希协议,并使矩阵位置结构符合:^Swift中的操作员,swift,Swift,查看哈希协议,并使矩阵位置结构符合: struct MatrixLocation: Hashable { let row: Int let col: Int var hashValue: Int { return row.hashValue ^ col.hashValue } } 哈希值具有^运算符 Swift中的^运算符是什么?^是Swift中的XOR运算符。基本上,它比较两个操作数的位,对于每个位,如果两个输入位中的一个是1,而另一个是0,它将结果的对应位设置为
struct MatrixLocation: Hashable {
let row: Int
let col: Int
var hashValue: Int { return row.hashValue ^ col.hashValue }
}
哈希值具有^
运算符
Swift中的
^
运算符是什么?^
是Swift中的XOR运算符。基本上,它比较两个操作数的位,对于每个位,如果两个输入位中的一个是1
,而另一个是0
,它将结果的对应位设置为1
。如果两个位都是1
或两个位都是0
,则会将结果中的位设置为0
因此,如果你有
0x49^0x13
,那将是01001001 XOR 00010011,结果将是01011010,或者0x5a
,因为这是一种快速简便的方法,可以以一种相对独特的方式组合两个现有哈希值。如果你只是对它们进行“或”运算,那么结果将是不成比例的1位,如果你对它们进行“和”运算,那么结果将是不成比例的0位。在异或运算中,每个位都有50/50的几率为0或1,这与这两个不同。异或运算快速且简单,但实际上并不是组合哈希值的好选择。查看一个更好的哈希组合器示例。