整数的二进制表示方法有两种,即原码、反码、补码。
有符号整数的三种形式都为首位符号位加数值位所组成,0表示正数,1表示负数
无符号位与有符号的正整数的原码、反码、补码都相同,无符号位也相当于正整数
而对于负数来说:如-1
原码就是符号位加对应的二进制位 10000000 00000000 00000000 00000001
而反码就是原码符号位不变,其他位按位取反 11111111 11111111 11111111 11111110
而补码就是反码加1 就是:11111111 11111111 11111111 11111111
而补码想得到原码可以直接同样先取反后加1,跟原码得到补码的步骤是一样的,或者先减1,得到反码,再取反得到原码
数据的储存都是补码,这是为什么呢?
使用补码,可以将符号位和数值位统一处理,同时,加法和减法也可以同时处理(CPU只有加法),还有,原码与补码的相互转换的运算过程也是相同的,不需要额外的硬件。