You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中^运算符是什么?结合Hashable协议实现场景解析

在Swift中,^运算符到底是什么?

你提到的^在Swift里是按位异或运算符(Bitwise XOR Operator),它是专门用来对两个整数的二进制位进行逐位异或操作的运算符。

核心规则

  • 异或的逻辑很直白:当两个对应二进制位不同时,结果位为1;当两个对应二进制位相同时,结果位为0。
    举个实际计算的例子:5 ^ 3
    • 5的二进制是 101
    • 3的二进制是 011
    • 异或后得到 110,也就是十进制的6

常见用途

除了你用到的计算哈希值场景,它还有不少实用的位操作场景:

  • 不用临时变量快速交换两个整数:a ^= b; b ^= a; a ^= b
  • 翻转某个整数的特定二进制位
  • 检测两个整数的二进制位差异

结合你的代码说两句

你在MatrixLocation的hashValue实现里用了row.hashValue ^ col.hashValue,虽然能生成哈希值,但这里有个小坑:异或是满足交换律的,也就是说MatrixLocation(row:1, col:2)和MatrixLocation(row:2, col:1)会得到完全相同的哈希值,这会大幅提升哈希冲突的概率。

如果要优化这个哈希值的计算,可以给其中一个值做位移后再异或,比如:

struct MatrixLocation: Hashable {
    let row: Int
    let col: Int
    var hashValue: Int {
        return row.hashValue ^ (col.hashValue << 16)
    }
}

这样能有效降低不同位置生成相同哈希值的概率。

内容的提问来源于stack exchange,提问作者stevenpcurtis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:16:46