-128补码

用八位的二进制来表示,-128补码是10000000

那为什么是10000000呢???

用8位的二进制来表示一个数,它的范围是-128~127

我们按照书本求补码是这样的:原码->反码->补码

现在问题来了,8位2进制数的源码范围只能到达127,那-128的补码是怎么得来的呢???

参考知乎@Simon Cao的答案:

https://www.zhihu.com/question/20458542

总结:

  • 负数的表达方式就是它绝对值的补数
  • 在8位二进制数中,0-127表示正数,128-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  |
+----------------------------+

8位二进制数的模是256

参考表来看的话:

  • 0-127的数都是正数,可以直接表示。
  • 当我要求-1补码时(8位2进制数),我可以这样求:256-1=255,255的二进制数是11111111
如果您觉得这篇文章帮助到了您,可以给作者一点鼓励



原文地址:https://www.cnblogs.com/zhong-fucheng/p/7203021.html