一个二进制数字一般一个字节八个比特位也就是0000 0000
一般第一位是符号位,也就是正反。
正数1 | 负数1 | 正负1相加 | |
源码 | 0000 0001 | 1000 0001 | 1000 0010 |
反码 | 0000 0001 | 1111 1110 | 1111 1111 |
补码 | 0000 0001 | 1111 1111 | 0000 0000 |
移码 | 1000 0001 | 0111 1111 | 1000 0000 |
源码正负1相加等到1000 0010这个结果是错的。
反码在源码的基础上将后七位全部取反,所以最后得到1111 1111。
补码在反码的基础上加1,然后最后的结果是0000 0000是对的。
移码是在特定场合用到的,一般作为浮点运算的阶码。他在补码的基础上将首位取反,所以最后的结果是1000 0000也是对的。
数值表示范围 | 整数公式 | 一个字节表示数 |
---|---|---|
源码 | -(2^{n-1}-1)~2^{n-1}-1 | -127~127 |
反码 | -(2^{n-1}-1)~2^{n-1}-1 | -127~127 |
补码 | -2^{n-1}-1~2^{n-1}-1 | -128~127 |
补码的正0和负0都为0000 0000所以少占一位数