Swift程序 查找给定数字的1的补数
二进制数字的1的补码是给定数字的倒数。例如,我们有一个数字=10101011,所以1的补码是01010100。在这里,我们使用以下两种方法来寻找1的补码 –
用0代替1,用1代替0
使用XOR
在这篇文章中,我们将学习如何编写一个Swift程序来寻找给定数字的1的补码。
方法1:用0替换1,用1替换0
这是找到给定数字的1的补数的最小方法。在这里,我们只需将给定的数字转换为二进制字符串,然后用1替换0,用0替换1,再将字符串转换为数字。
算法
- 第1步 – 创建一个函数。
-
第2步 – 将给定的数字转换成二进制字符串。
-
第 3步 – 使用for-in循环来翻转比特并将结果存储到新的字符串中。
-
第 4步 – 将字符串转换回数字。
-
第 5步 – 创建一个变量来存储输入的数字并将其传递给函数。
-
第 6步 – 打印输出。
例子
以下是Swift程序,用于查找给定数字的1的补码。
import Foundation
import Glibc
// Function to find one's complement
func onesComplement(num: Int) -> Int {
// Converting number into binary string
let binaryString = String(number, radix: 2)
var onecomplement = ""
// Replacing 1s with 0s and 0s with 1s
for char in binaryString {
onecomplement += (char == "0") ? "1" : "0"
}
// Converting binary string back into number
return Int(onecomplement, radix: 2)!
}
// Test input
let number = 22
let result = onesComplement(num: number)
print("One's complement of 22 is ", result)
输出
One's complement of 22 is 9
在上面的代码中,我们创建了一个函数来查找一的补码。在这个函数中,首先我们使用String()初始化器将输入的数字转换成一个二进制字符串。然后我们使用for循环遍历字符串的每个字符,用1替换0,用0替换1。然后用Int()初始化器将二进制字符串转换回数字。
方法2:使用XOR
在这个方法中,我们使用XOR找到一的补数。所以,在这里我们首先找到表示给定数字所需的比特数,然后通过在比特数的左移上加1来创建一个掩码。我们通过对给定的数字和掩码进行XOR操作来计算一的补数。
算法
- 第1步 – 创建一个函数。
-
第2步 – 将给定的数字转换成二进制字符串,然后计算总位数。
-
第 3步 – XOR给定的整数。
let mask = (1 << count) – 1
让onecomplement = number ^ mask
- 第4步 – 创建一个变量来存储输入的数字并将其传递给函数。
-
第 5 步 – 打印输出。
例子
以下是Swift程序,用于查找给定数字的1的补码。
import Foundation
import Glibc
// Function to find one's complement
func onesComplement(number: Int) -> Int {
let count = String(number, radix: 2).count
// XOR the given number
let mask = (1 << count) - 1
let onecomplement = number ^ mask
return onecomplement
}
// Test input
let value = 9
print("One's complement of \(value) is \(onesComplement(number: value))")
输出
One's complement of 9 is 6
在上面的代码中,我们创建了一个函数来寻找一补。在这个函数中,首先我们计算出以二进制形式表示给定数字所需的总位数。然后用(1<<count)-1来计算掩码,用于XOR给定的数字。然后用掩码(number ^ mask)与给定的数字进行XOR,计算出1的补码,并返回结果。现在调用这个函数,并在其中输入数字,显示结果。
总结
在这篇文章中,我们学习了两种不同的方法来寻找一个给定数字的1的补码。在第一种方法中,我们只是将给定数字的1和0倒置,而在第二种方法中,我们使用XOR门来寻找1的补码。