我有一个十进制数字,我想将该数字的前8位转换为一个称赞(即使大于8位的数字也是如此)。
例如,我将数字633转换为二进制形式时,它将是0010 0111 1001
当我对前8位进行补码时,它变为1000 0110,此二进制的十进制数为134 ..
我正在尝试通过编程方式实现这一目标,请提前提供帮助。
答案 0 :(得分:1)
您甚至无需转换为二进制即可完成此操作:
let n = 633
let result = 255 - n % 256
print(result) // 134
用256
修改数字将产生低阶8位,并从255
减去数字将执行1的补码。
您可以通过使用& 255
或& 0xff
来获得低阶8位来获得相同的结果:
let result = 255 - n & 255
您还可以通过使用255
运算符对^
进行XOR运算来执行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