我有一个十进制数,我想将该数字的前 8 位转换为一个人的赞美(即使它超过 8 位数字)..
例如,我有数字 633,当我将其转换为二进制形式时,它将是 0010 0111 1001
当我对前 8 位求和时,它变成了 1000 0110,这个二进制的十进制数是 134 ..
我正在尝试通过编程方式实现这一点,请帮助..提前致谢。
最佳答案
你甚至可以在不转换为二进制的情况下做到这一点:
let n = 633
let result = 255 - n % 256
print(result) // 134
用 256
修改数字产生低 8 位,并从 255
中减去它执行 1 的补码。
使用& 255
或& 0xff
获取低8位可以得到相同的结果:
let result = 255 - n & 255
您还可以使用 ^
运算符与 255
进行异或来执行 1 的补码:
let result = (n & 255) ^ 255
如果你坚持要转换成二进制然后做补码,那么你可以这样做:
let n = 633
let binary = String(n, radix: 2)
let lowbits = ("0000000" + binary).suffix(8)
let complement = String(lowbits.map { $0 == "0" ? "1" : "0" })
let result = Int(complement, radix: 2)!
print(result) // 134
关于swift - 如何快速计算一个人的赞美的小数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51595328/