什么是原码,反码,补码?
正数5:
5的二进制是:00000101
原码:00000101//就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码:00000101//负数的反码是对其原码逐位取反,但符号位除外。
补码:00000101//负数的补码是在其反码的末位加1。
------------------------------------------------------
负数:-5:
5的二进制是:00000101
原码:10000101//就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码:11111010//负数的反码是对其原码逐位取反,但符号位除外。
补码:11111011//负数的补码是在其反码的末位加1。
原位:无
反码:无
补码:10000000
1 原码和反码都无法表示, 补码是10000000
2 -128没有反码
3 反码只能表示0到127,-0到-127
4.二进制原码或者8位二进制反码的表示范围是-127 ~ +127,不能表示-128;而8位二进制补码的表示范围是-128 ~ +127,-128的8位二进制补码为10000000。
将负数用补码表示,实际上是实现了一种从[-128, 127]到[0, 255]的映射。如下所示:
+----------------------------+
| 255 -1 11111111 |
| 254 -2 11111110 |
| 253 -3 11111101 |
| 252 -4 11111100 |
| 251 -5 11111011 |
| 246 -10 11110110 |
| 236 -20 11101100 |
| 226 -30 11100010 |
| 216 -40 11011000 |
| 206 -50 11001110 |
| 196 -60 11000100 |
| 186 -70 10111010 |
| 156 -100 10011100 |
| 129 -127 10000001 |
| 128 -128 10000000 |
| 127 127 01111111 |
| 100 100 01100100 |
| 70 70 01000110 |
| 60 60 00111100 |
| 50 50 00110010 |
| 40 40 00101000 |
| 30 30 00011110 |
| 20 20 00010100 |
| 10 10 00001010 |
| 5 5 00000101 |
| 4 4 00000100 |
| 3 3 00000011 |
| 2 2 00000010 |
| 1 1 00000001 |
| 0 0 00000000 |
+----------------------------+