原码
使用二进制如何标识 1 和 -1 呢 1 : 0000 0001
-1 : 1000 0001
我们通过对比能很快发现第一位是符号位, 这其实是易于人来理解和计算的一种表示方式, 这个表示方式叫...反码
接下来我们看另外一种表示方式, 使用 1-1 = 0 来解释. 假如我们符号位也参与计算, 同时让正数的二进制保持不变....同样让符号位参与计算, 我们让正数的二进制保持不变, 负数的二进制的符号位保持不变, 其余各位取反, 最后+1, 其实负数的补码就是这个先找个数的反码, 然后反码加 1....所以当看到程序用uint`x`来定义变量时, 这个变量就是无符号类型的.
为什么 Go 不像 Java 那样一个 int 类型吃遍天呢, 搞出无符号类型的目的何在有符号数是可以表示负数的....同样的 1-2 对于 uint64 结果就会变成 18446744073709551615. 是不是很夸张??我们上面都说的减法, 那加法会不会出现这个情况呢?