首页 文章 正文

原码、反码、补码

2023.8.14 文章 215

原码

原码是十进制数据的二进制表现形式,最左边是符号位,0为正,1为负。

最大值127的原码为0111 1111

最小值-127原码为1111 1111

利用原码对正数进行计算不会有问题,但如果是对负数计算,结果就出错。

  1000 0000  -0
+ 0000 0001  +1
-----------
  1000 0001  -1(正确值:+1)

反码

为了解决原码不能计算负数的问题,出现了反码。

正数的反码不变,负数的反码符号位不变,其余位取反,0变1,1变0。

十进制数字 原码 反码 补码
+0 0000 0000 0000 0000 0000 0000
-0 1000 0000 1111 1111 0000 0000
-1 1000 0001 1111 1110 1111 1111
-2 1000 0010 1111 1101 1111 1110
-127 1111 1111 1000 0000 1000 0001
-128 1000 0000

反码也有弊端,在进行负数计算的时候,如果结果不跨0,是没有问题的,但是如果结果跨0,跟实际结果会有1的偏差。

  1111 1101  -2    |      1111 1101  -2
+ 0000 0010  +2    |    + 0000 0011  +3
-----------        |      ---------
  1111 1111  -0    |      0000 0000  +0(正确值:+1)

补码

虽然+0和-0是一样的,但0带符号没有任何意义,而且会有两个反码表示0。于是补码的出现,解决了0的符号以及两个编码的问题,解决了负数计算跨0的问题。

正数的补码不变,负数的补码在其反码的基础上+1。补码能多记录一个特殊值-128,该数据在1个字节下,没有原码和反码。

计算机中的存储和计算都是以补码的形式进行的。

  1. 转载请保留原文链接:原码、反码、补码 https://aboss.top/post/52/
  2. 本站所有资源文章出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
  3. 本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户擦亮眼睛自行鉴别,做一个有主见和判断力的用户。
  4. 本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。
  5. 联系方式(#替换成@):mail#aboss.top

评论

热门搜索