所以计算机使用二进制补码在内部表示有符号整数。即,-5 表示为 ^5 + 1 = "1111 1011"。
但是,尝试打印二进制表示,例如以下代码:
var i int8 = -5
fmt.Printf("%b", i)
输出-101。不完全是我所期望的。格式是不同的还是根本不使用二进制补码?
有趣的是,转换为 unsigned int 会产生“正确”的位模式:
var u uint8 = uint(i)
fmt.Printf("%b", u)
输出是11111011- 正好是 的 2s 补码-5。
所以在我看来,这个值在内部实际上是使用二进制补码,但格式是打印无符号5并在前面加上-.
有人可以澄清一下吗?
慕娘9325324
qq_笑_17
犯罪嫌疑人X
相关分类