https://www.cnblogs.com/baiqiantao/p/7442907.html
https://blog.csdn.net/zhiwen_a/article/details/81192087
自己误区纠正:
1. 对于正数、零: 原码、反码、补码都是一样的。
2. 为什么需要反码: 计算机没有办法像人一样计算正负。 反码的计算时要保留符号位的。 有符号的数的反码/补码最高位都是1.
3. 为什么需要补码: 利用反码计算 -2 + 1 = -1, 没有问题。 但是计算-1 + 1会得到-0. 在负数反码的基础上 +1, 可以得到一个解决负零的问题。 补码的计算时, 最高位是要进位的。
4. 原码、反码、 补码都是有符号位的。 在根据补码反推原码的时候,要先识别符号位, 如果符号位为1, 则-1得到反码。 然后反码保留符号位进行翻转得到原码。
5. 一个字节的共8位, 可以表示256个数字。 但是原码表示的范围是-127 ~ 127. 但是补码表示的-128~127. 这是因为原码反码中的负零定义为补码中的-128中了。 这也就解释了为什么取值范围负数要比整数多一位。
6. 整数转换成二进制, 一直除到商为零, 取余数。 小数转换成二进制, 一直乘2, 直到小数部分为零, 取整数部分。
https://jingyan.baidu.com/article/425e69e6e93ca9be15fc1626.html