返回

剖析 Swift 位运算符:全面指南

IOS

位运算符在 Swift 中扮演着至关重要的角色,为我们提供了在二进制层面操作数据的强大工具。这些运算符通过直接处理数据的二进制位,使得执行特定的任务变得轻而易举,例如数据比较、位设置和位掩码。

位与运算符(&)

位与运算符(&)对两个数字的二进制位进行合并。它返回一个新数字,其中只有当这两个数字的对应位都是 1 时,该位置才为 1。换句话说,它只保留两个输入数字中同时为 1 的位。

// 示例:计算 5(0101)和 7(0111)的位与运算
let result = 5 & 7 // 结果为 5(0101)

位或运算符(|)

位或运算符(|)对两个二进制位进行比较,并返回一个新数字,其中只要两个输入位中任何一个为 1,该位置就为 1。换句话说,它将两个输入数字中任何位置为 1 的位都置为 1。

// 示例:计算 5(0101)和 7(0111)的位或运算
let result = 5 | 7 // 结果为 7(0111)

位异或运算符(^)

位异或运算符,也称为“互斥或”运算符(^),将两个数字的二进制位进行比较,并返回一个新数字,其中当且仅当两个输入位不同时,该位置才为 1。换句话说,它只保留两个输入数字中一个为 1 而另一个为 0 的位。

// 示例:计算 5(0101)和 7(0111)的位异或运算
let result = 5 ^ 7 // 结果为 2(0010)

左移运算符(<<)

左移运算符(<<)将数字的二进制表示向左移动指定的位数。这相当于将该数字乘以 2 的指定位数。

// 示例:将 5(0101)向左移动 2 位
let result = 5 << 2 // 结果为 20(10100)

右移运算符(>>)

右移运算符(>>)将数字的二进制表示向右移动指定的位数。对于有符号整数,这相当于将该数字除以 2 的指定位数;对于无符号整数,这相当于将该数字的无符号表示除以 2 的指定位数。

// 示例:将 20(10100)向右移动 2 位
let result = 20 >> 2 // 结果为 5(0101)

位翻转运算符(~)

位翻转运算符(~)取一个数字的二进制表示并对其进行按位取反。换句话说,它将数字的每个 0 改为 1,而将每个 1 改为 0。

// 示例:翻转 5(0101)的位
let result = ~5 // 结果为 -6(10110)

使用位运算符的实际示例

位运算符在各种场景中都有广泛的应用,例如:

  • 数据压缩: 通过移除数据中的冗余信息来压缩数据。
  • 图像处理: 通过应用掩码或合并图像层来处理图像。
  • 密码学: 在加密算法中进行数据加密和解密。
  • 操作系统: 在内存管理和文件权限管理中控制和操作数据。