但你是否注意到 golang 里面分有符号和无符号类型的数, 如 int8 和 uint8 根据上面的结果, 有符号数的减法基本在我们认知范围之内....所以当看到程序用uint`x`来定义变量时, 这个变量就是无符号类型的.
为什么 Go 不像 Java 那样一个 int 类型吃遍天呢, 搞出无符号类型的目的何在有符号数是可以表示负数的....如 int8 的范围区间是[-128, 127]. 而有些场景下我们只想要正数, 那么就可以用无符号数来表示, 同样 uint8 就可以代表 [0, 255]
节省计算机资源....声明同一个变量, 使用 int8 占一个字节, uint32 就占用 4 个字节.
其实我觉得更大的可能性是, Go 是那帮写 C 的人设计的, 他们继续沿用了 C 里面这个传统的数值表示方式....0001]补 + [1111 1110]补 = 1111 1111(补码)
由于无符号数的加减结果仍然是无符号数, 那么 1111 1111 就是一个无符号的数, 所以最高位不是符号位.