数字53的二进制表示为0b00110101
,-53为11001010
。
我使用了53的1的补码来得到-53的二进制值。
但是当我尝试将这些二进制数打印为
时print(0b00110101) //53
print(0b11001010) //-53
我得到以下输出。
53
202
如何让编译器返回二进制值的负表示?
答案 0 :(得分:3)
0b11001010
是整数字面,在print(0b11001010)
中,其类型为Int
,值为202
。
但您可以使用相同的位模式创建带符号的8位值:
let x = Int8(bitPattern: 0b11001010)
// Equivalent to:
// let x = Int8(bitPattern: 202)
print(x) // -54
使用Int8(bitPattern:)初始化程序:
创建一个与给定值具有相同内存表示的新实例。
(这里编译器将整数文字的类型推断为UInt8
。)