1、原码、反码、补码的基础概念和计算方法。 ①原码:就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制 [+1]原 = 0000 0001 ;[-1]原 = 1000 0001 因为第一位是符号位,所以八进制取值范围就 是-127~127. ②反码:就是原码取反,正数反码就是本身,负数的反码就是在原码基础上符号位不变,其余位取反。 [+1] = [00000001]原 = [00000001]反 [-1] = [10000001]原 = [11111110]反 ③补码:正数补码就是其本身,负数补码是在其原码基础上,符号位不变其他位取反在+1. [+1] = [00000001]原 = [00000001]反 = [00000001]补 [-1] = [10000001]原 = [11111110]反 = [11111111]补 2、发现用反码计算减法, 结果的真值部分是正确的. 而唯一的问题其实就出现在"0"这个特殊的数值上. 虽然人们理解上+0和-0是一样的, 但是0带符号是没有任何意义的. 而且会有[0000 0000]原和[1000 0000]原两个编码表示0. 3、使用补码, 不仅仅修复了0的符号以及存在两个编码的问题, 而且还能够多表示一个最低数. 这就是为什么8位二进制, 使用原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127]. |