强制二进制数显示Signed Integer?

时间:2017-07-05 17:33:08

标签: swift

数字53的二进制表示为0b00110101,-53为11001010

我使用了53的1的补码来得到-53的二进制值。

但是当我尝试将这些二进制数打印为

print(0b00110101) //53
print(0b11001010) //-53

我得到以下输出。

  

53

     

202

如何让编译器返回二进制值的负表示?

1 个答案:

答案 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。)