- Swift 教程
- Swift - 首页
- Swift - 概述
- Swift - 环境
- Swift - 基本语法
- Swift - 变量
- Swift - 常量
- Swift - 字面量
- Swift - 注释
- Swift 运算符
- Swift - 运算符
- Swift - 算术运算符
- Swift - 比较运算符
- Swift - 逻辑运算符
- Swift - 赋值运算符
- Swift 位运算符
- Swift - 其他运算符
- Swift 高级运算符
- Swift - 运算符重载
- Swift - 算术溢出运算符
- Swift - 同一性运算符
- Swift - 范围运算符
- Swift 数据类型
- Swift - 数据类型
- Swift - 整数
- Swift - 浮点数
- Swift - Double
- Swift - 布尔值
- Swift - 字符串
- Swift - 字符
- Swift - 类型别名
- Swift - 可选值
- Swift - 元组
- Swift - 断言和先决条件
- Swift 控制流
- Swift - 决策
- Swift - if 语句
- Swift - if...else if...else 语句
- Swift - if-else 语句
- Swift - 嵌套 if 语句
- Swift - switch 语句
- Swift - 循环
- Swift - for in 循环
- Swift - while 循环
- Swift - repeat...while 循环
- Swift - continue 语句
- Swift - break 语句
- Swift - fall through 语句
- Swift 集合
- Swift - 数组
- Swift - 集合
- Swift - 字典
- Swift 函数
- Swift - 函数
- Swift - 嵌套函数
- Swift - 函数重载
- Swift - 递归
- Swift - 高阶函数
- Swift 闭包
- Swift - 闭包
- Swift - 转义和非转义闭包
- Swift - 自动闭包
- Swift 面向对象编程
- Swift - 枚举
- Swift - 结构体
- Swift - 类
- Swift - 属性
- Swift - 方法
- Swift - 下标
- Swift - 继承
- Swift - 重写
- Swift - 初始化
- Swift - 析构
- Swift 高级特性
- Swift - ARC 概述
- Swift - 可选链
- Swift - 错误处理
- Swift - 并发
- Swift - 类型转换
- Swift - 嵌套类型
- Swift - 扩展
- Swift - 协议
- Swift - 泛型
- Swift - 访问控制
- Swift - 函数与方法
- Swift - SwiftyJSON
- Swift - 单例类
- Swift 随机数
- Swift 不透明类型和装箱类型
- Swift 有用资源
- Swift - 在线编译
- Swift - 快速指南
- Swift - 有用资源
- Swift - 讨论
Swift 位运算符
Swift 中的位运算符
当我们想要对指定数字的位进行运算时,通常会使用位运算符。这些运算符用于低级编程,进行位级计算,或在通信网络中以位发送数据。我们可以对整数类型应用位运算符。
这些运算符不会导致溢出,因为位运算符的结果始终在给定数值类型的范围内。Swift 支持以下位运算符:
运算符 | 名称 | 示例 |
---|---|---|
~ | 按位非运算符 | ~(11011) = (00100) |
& | 按位与运算符 | (110011) & (101101) = 100001 |
| | 按位或运算符 | (100011) | (10111) = 101111 |
^ | 按位异或运算符 | (100011) ^ (10111) = 00100 |
<< | 按位左移运算符 | (100011) << 2 = 10001100 |
>> | 按位右移运算符 | (100011) >> 2 = 1000. |
Swift 中的按位非运算符
按位非运算符 (~) 用于反转所有给定的位(将 0 转换为 1 或 1 转换为 0)。或者可以说它返回给定位的反码。
例如,我们有 1100011 位,在使用按位非运算符后,我们将得到 0011100 位作为输出。它是一个前缀运算符,用在它将要操作的变量之前。
语法
以下是按位非运算符的语法:
~VariableName
示例
使用按位非运算符计算反码的 Swift 程序。
import Foundation var num : UInt8 = 0b00011111 // Finding one's complement using bitwise NOT operator var result = ~(num) print("Original bits:", String(num, radix: 2)) print("One's complement:", String(result, radix: 2))
输出
Original bits: 11111 One's complement: 11100000
Swift 中的按位与运算符
按位与运算符 (&) 用于对给定两个操作数的每个位执行与运算。或者可以说它用于组合给定两个数字的位,并返回一个新数字,其位仅在两个输入位都为 1 时才设置为 1。例如,A = 110011 和 B = 101101,因此在执行按位与运算后,我们得到 100001。真值表如下:
P | Q | P & Q |
---|---|---|
0 | 0 | 0 |
1 | 0 | 0 |
0 | 1 | 0 |
1 | 1 | 1 |
语法
以下是按位与运算符的语法:
Operand1 & Operand2
示例
执行按位与运算的 Swift 程序。
import Foundation var num1 : UInt8 = 0b1000101 var num2 : UInt8 = 0b1100011 // Performing bitwise AND operation var result = num1 & num2 print("Result:", String(result, radix: 2))
输出
Result: 1000001
Swift 中的按位或运算符
按位或运算符 (|) 用于对给定两个操作数的每个位执行或运算。或者可以说它用于比较给定两个数字的位,并返回一个新数字,其位如果任何一个输入位为 1,则设置为 1。
例如,A = 100011 和 B = 10111,因此在执行按位或运算后,我们得到 101111。真值表如下:
P | Q | P | Q |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 1 |
语法
以下是按位或运算符的语法:
Operand1 | Operand2
示例
执行按位或运算的 Swift 程序。
import Foundation var num1 : UInt8 = 0b1010001 var num2 : UInt8 = 0b1100011 // Performing bitwise OR operation var result = num1 | num2 print("Result:", String(result, radix: 2))
输出
Result: 1110011
Swift 中的按位异或运算符
按位异或运算符 (^) 用于对给定两个操作数的每个位执行异或运算。或者可以说它用于比较给定两个数字的位,并返回一个新数字,其位如果一个输入位为 0 另一个位为 1 或反之亦然,则设置为 1。
例如,A = 100011 和 B = 10111,因此在执行按位异或运算后,我们得到 00100。真值表如下:
P | Q | P ^ Q |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
0 | 1 | 1 |
1 | 1 | 0 |
语法
以下是按位异或运算符的语法:
Operand1 ^ Operand2
示例
执行按位异或运算的 Swift 程序。
import Foundation var num1 : UInt8 = 0b1011001 var num2 : UInt8 = 0b1100011 // Performing bitwise XOR operation var result = num1 ^ num2 print("Result:", String(result, radix: 2))
输出
Result: 111010
Swift 中的按位左移运算符
按位左移运算符 (<<) 用于将给定数字的所有位向左移动给定位数。例如,A = 100011,因此将位向左移动 2 位后,我们得到 10001100。
向左移动无符号整数时,如果任何位超出整数边界,则将被丢弃。此外,当我们将位从左向右移动时,在原始位移动后会留下一个空间,因此该空间将用零填充。
相反,有符号整数以两种不同的方式移位。正整数(如果符号位为 0)将像无符号整数一样存储。相反,负整数(如果符号位为 1)将通过从 2 的 n 次幂中减去其绝对值来存储,其中 n 表示值位的数量,这也被称为二进制补码。
语法
以下是按位左移运算符的语法:
Operand1 << Operand2
示例
执行按位左移运算的 Swift 程序。
import Foundation let number: UInt8 = 42 // Perform a bitwise left shift operation // Here the bits of a given number are shifted by 3 places on the left side let shiftedNum = number << 3 print("Original Number: \(number)") print("Shifted Number: \(shiftedNum)")
输出
Original Number: 42 Shifted Number: 80
Swift 中的按位右移运算符
按位右移运算符 (>>) 用于将给定数字的所有位向右移动给定位数。例如,**A = 100011**,因此将位向右移动 2 位后,我们得到 1000。
众所周知,整数分为有符号和无符号两种类型。因此,当我们将无符号整数向右移动时,如果任何位超出整数边界,则将被丢弃。此外,当我们将位从右向左移动时,在原始位移动后会留下一个空间,因此该空间将用零填充。
同时,有符号整数以两种不同的方式移位。正整数(如果符号位为 0)将像无符号整数一样存储,而负整数(如果符号位为 1)将通过从 2 的 n 次幂中减去其绝对值来存储,其中 n 表示值位的数量。
语法
以下是按位右移运算符的语法:
Operand1 >> Operand2
示例
执行按位右移运算的 Swift 程序。
import Foundation let number: UInt8 = 32 // Perform a bitwise right shift operation // Here the bits of a given number are shifted by 2 places on the right side let shiftedNum = number >> 2 print("Original Number: \(number)") print("Shifted Number: \(shiftedNum)")
输出
Original Number: 32 Shifted Number: 8