当为Int8类型的var分配8位二进制值时,为什么会出现Swift语言溢出?

sno*_*ell 0 overflow swift

当我在操场上写这行时:

let firstBits: Int8 = 0b11111111
Run Code Online (Sandbox Code Playgroud)

存在错误:存储到'Int8'时整数文字溢出

由于Int8是一个有符号值,其范围是-128到127.左边的第一位是单(减号或加号),另外7位代表值.所以二进制格式应该总共有8位.但为什么会有错误呢?

如果我这样用7位写:

let firstBits: Int8 = 0b1111111
Run Code Online (Sandbox Code Playgroud)

没有错误,firstBits的值为127.

那么我应该如何将-128分配给带有二进制格式的firstBits?

use*_*547 7

虽然我不与斯威夫特有经验,我可以放心地假定二进制文字并不能代表二进制表示,但只有价值.所以0b11111111仍然是255.如果你想-128,你应该使用-0b10000000.