我有一个十进制数,我想把这个数字的前8位转换为恭维(即使它超过8位数)。
例如,我有编号633,当我将它转换成二进制格式时,它将是0010 0111 1001。
当我赞美前8位时,它变成了1000,0110,这个二进制的十进制数是134。
我正试图通过编程实现这一点,请提前帮助..thanks。
发布于 2018-07-30 13:46:51
您可以在不转换为二进制文件的情况下完成此操作:
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-ing对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) // 134https://stackoverflow.com/questions/51595328
复制相似问题