JackRyannn Blog
  • /home
  • /archive
  • /tags
  • /about
  • /RSS

原码反码补码的理解

28 May 2017
  • 技术博客

原码很直观,就是给人看的

反码是最大值减去原码,只是用来过渡一下

补码才是计算机使用的,是计数系统容量(模)减去原码

举例:

假如原码是5,2进制为00000101

反码是11111111 - 00000101 = 11111010,其实也就是各位取反

补码,对于八位二进制数,首位是符号位,因此这个八位二进制树只能表示2^7,也就是10000000,这是计数系统的最大容量,也即是 模 所以补码 = 10000000 - 00000101 = 01111011.这是标准的理解,而我们实际上使用的时候,负数的补码从来都是去掉符号位然后取反+1来计算的,正数的补码就是原码。

模拟计算5-6

5的原码:00000101

-6的原码:10000110

5的补码:00000101

-6的补码:11111010

5-6 = 00000101 + 11111010 = 11111111(负数求补码,正数不用管)

所以5-6 = 10000001 = -1

补码的好处就是不考虑正负号直接相加运算,非常适合计算机,省去了很多逻辑判断。

最近文章

  • 美团日报
  • 美团日报
  • 美团日报
  • 美团日报
  • 美团日报

标签

  • Android
  • 服务器
  • 个人日记
  • Java
  • Andriod
  • 算法
  • Gaker
  • 转载
  • 技术博客

JackRyannn © 2015

Follow me
  • Github