-128补码

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

那为何是10000000呢???spa

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

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

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

参考知乎@Simon Cao的答案:源码

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

总结:class

  • 负数的表达方式就是它绝对值的补数
  • 在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位二进制数的模是256im

参考表来看的话:

  • 0-127的数都是正数,能够直接表示。
  • 当我要求-1补码时(8位2进制数),我能够这样求:256-1=255,255的二进制数是11111111
相关文章
相关标签/搜索