Swift 位运算和位移运算符
- 位运算符概念:Swift中的位运算符对整数的单个位级别执行操作,包括位与(
&
), 位或(|
), 位异或(^
), 位非(~
), 左位移(<<
)和右位移(>>
)。 - 操作原理简述:位与(
&
)运算符只在两个操作数都为1时返回1,位或(|
)运算符在至少一个操作数为1时返回1,位异或(^
)运算符在一个操作数为1时返回1,位非(~
)运算符反转位,左右位移(<<
,>>
)分别向左右移 动位数。 - 特别说明:位非运算(
~
)的结果是-(N + 1)
(N为操作数),左右位移运算符分别移动位数,左移丢弃最左边位,右移根据符号填补最右边位。
位运算符在整数数据的单个位级别上执行操作。这些操作包括测试、设置或移动实际的位。例如,
a & b
a | b
在这个例子中,&
和 |
是位运算符。
这是 Swift 中包含的各种位运算符的列表
| 运算符 | 名称 | 示例 |
| ------ | -------------------------------------------------- | --------------------------------------------- | --- | --- |
| &
| 位与 | a & b
|
| |
| 位或 | a | b
|
| ^
| 位异或 | a ^ b
|
| ~
| 位非 | ~ a
|
| <<
| 左位移 | a << b
|
| >>
| 右位移 | a >> b
|
位与运算符
位与运算符 &
仅当两个操作数都是 1 时返回 1。否则,它返回 0。
a
和 b
的位与操作可以在下表中表示:
a | b | a & b |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
注意: 上表被称为位与运算符的“真值表”。
让我们看一下两个整数 12 和 25 的位与运算:
12 = 00001100(二进制)
25 = 00011001(二进制)
// 12 和 25 的位与运算
00001100
& 00011001
_____________
00001000 = 8(十进制)
示例 1:位与运算符
var a = 12
var b = 25
var result = a & b
print (result) // 8
在上述示例中,我们声明了两个变量 a
和 b
。这里,注意这一行,
var result = a & b
这里,我们正在执行 a
和 b
之间的位与运算。
位或运算符
位或运算符 |
如果至少一个操作数是 1,则返回 1。否则,返回 0。
a
和 b
的位或操作可以在下表中表示:
a | b | a | b |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
让我们看一下两个整数 12 和 25 的位或运算:
12 = 00001100(二进制)
25 = 00011001(二进制)
// 12 和 25 的位或运算
00001100
| 00011001
____________
00011101 = 29(十进制)
示例 2:位或运算符
var a = 12
var b = 25
var result = a | b
print(result) // 29
在这里,我们对12和25执行了位或运算。
位异或运算符
位异或运算符 ^
只有在一个操作数为1时才返回1。然而,如果两个操作数都是0,或者都是1,那么结果就是0。
对 a
和 b
进行位