
- 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