当前位置: 首页 > news >正文

软件设计师考试 - 数据表示(原码、反码、补码、移码)

软件设计师考试 - 数据表示(原码、反码、补码、移码)

   为了便于运算,带符号的机器数可采用原码、反码和补码等不同的编码方法,机器数的这些编码方法称为码制。

   一、原码(最直观的表示方式)
   1. 定义

   原码是一种最自然、最直观的带符号整数表示方式。

   规则如下:

  • 最高位为符号位
  • 0 表示正数
  • 1 表示负数
  • 其余位表示数值的绝对

    简单来说:

    原码 = 符号位 + 数值的二进制表示

    2. 举例说明:
    | 十进制 |   原码表示  |
    | ----- | --------- |
    | +5      | 0000 0101   |
    | -5      | 1000 0101    |
   解释:

   +5:符号位 0,数值部分 0000101

   -5:符号位 1,数值部分 0000101

   可以看到,正负数只有最高位不同。

   3. 原码的优点

   表示方式直观、容易理解、符号与数值分离清晰

   这也是为什么在学习计算机组成原理时,通常会先介绍原码。

   4. 原码的缺点

   虽然直观,但原码存在明显问题:

   1)存在两个 0
   +0 = 0000 0000
   -0 = 1000 0000

   计算机中出现两个 0,会增加逻辑复杂度。

   2)运算复杂

   例如计算:5 + (-5)

  如果使用原码,符号和数值需要分开判断处理,不能直接用普通加法电路完成。这会使硬件设计变得复杂。

   二、反码(对原码的改进尝试)

   1.  定义

   反码是在原码基础上的一种改进方案,目的是让减法运算更容易实现。

   规则如下:

  • 正数的反码 = 原码
  • 负数的反码 = 符号位不变,其余各位按位取反

   也就是说:反码 = 原码(正数不变,负数除符号位外全部取反

   2.  举例说明(以 8 位二进制为例)

   以 5 为例:
   | 十进制 | 原码 | 反码 |
   | --- | --------- | --------- |
   | +5   | 0000 0101   | 0000 0101   |
   | -5   | 1000 0101    | 1111 1010     |

  解释:

  -5 原码:1000 0101

  除符号位外取反:1111 1010

  3.  反码的优点

  减法可以部分转化为加法

  比原码更接近实际运算需求

  4.  反码的缺点

  1)仍然存在两个 0

  +0 = 0000 0000
  -0 = 1111 1111

  双零问题依然存在。

  2)运算规则仍然不够简洁

  反码加法在出现进位时,需要“末位回卷”(循环加 1),增加了电路复杂度。

  小结:反码是对原码的一次改进,但并没有彻底解决问题。于是,人们继续优化,最终得到了更完美的方案 —— 补码。

  三、补码(现代计算机采用的表示方式)
  1. 定义

  补码是在反码基础上进一步改进得到的。

  规则如下:

  • 正数的补码 = 原码
  • 负数的补码 = 反码 + 1

  也可以理解为:

  负数补码 = 对原码(除符号位外)取反,再加 1

  2.  举例说明(以 8 位二进制为例)

  以 -5 为例:

  原码:1000 0101

  反码:1111 1010

  补码:1111 1011
   | 十进制   |   补码          |
   | ---       | --------- |
   | +5         | 0000 0101 |
   | -5         | 1111 1011    |

  补码的优点

  1)只有一个 0

 表示为: 0000 0000

  解决了双零问题。

(2)加减法可以统一

  表示为: 5 + (-5)
  补码表示:

   0000 0101
  +1111 1011
  -----------
  1 0000 0000

  丢弃最高位进位,结果为:

  0000 0000

运算过程完全等同于普通二进制加法。

(3)硬件实现简单

计算机只需要一套加法电路,就可以完成加法和减法。

这大大降低了硬件复杂度。
表示范围(8 位)

最小值:1000 0000 → -128

最大值:0111 1111 → 127

范围为:

-128 ~ 127
小结

补码彻底解决了:

双零问题

运算复杂问题

硬件实现复杂问题

因此,现代计算机全部采用补码表示整数。

四、移码(主要用于浮点数)
1️⃣ 定义

移码是在补码基础上的一种变形形式。

规则:

移码 = 补码的符号位取反

或者从数学角度理解:

在原数值基础上加上一个固定偏移量(Bias)

2️⃣ 举例说明(8 位)

以 -5 为例:

补码:1111 1011

移码:0111 1011

3️⃣ 移码的特点

没有符号位的负数表示

所有数看起来都是“无符号数”

非常方便比较大小

应用场景

移码主要用于:

浮点数的指数部分

科学计数法表示

在 IEEE754 标准中,指数部分就是采用移码表示。

5️⃣ 小结

移码并不是用来表示普通整数的,而是为浮点数设计的一种特殊编码方式。
最终总结对比

| 编码方式 | 是否有两个 0 | 运算是否方便 | 实际是否使用 |
| ---- | ------- | ------ | ------ |
| 原码 | 有 | 否 | 不使用 |
| 反码 | 有 | 一般 | 不使用 |
| 补码 | 无 | 是 | ✅ 使用 |
| 移码 | 无 | 用于比较 | 用于浮点 |

 

 

 

http://www.jsqmd.com/news/381869/

相关文章:

  • 【计算机基础】-62-当负载所需要的功率或电流大于电源提供的功率时,会怎么样?
  • 原木定制如何避坑?2026年口碑企业浅析,全屋定制/原木定制,原木定制品牌哪家好 - 品牌推荐师
  • 214
  • 2026年深圳居民搬家公司推荐:市场趋势与服务标准评测,涵盖家庭与企业搬迁核心痛点 - 十大品牌推荐
  • 2026年北大青鸟海淀校区口碑好的品牌,价格贵吗 - 工业品牌热点
  • 教你快速回收盒马鲜生卡!简单又划算 - 团团收购物卡回收
  • 2026年深圳钢琴搬运公司推荐:多场景长期测试评价,针对钢琴运输安全痛点指南 - 十大品牌推荐
  • SpringBoot 集成 MinIO 实战(对象存储):实现高效记录管理
  • 2026年行业内可靠的工地疏通厂家推荐,工地疏通厂家怎么选永邦环卫诚信务实提供高性价比服务 - 品牌推荐师
  • 公司搬家哪家更可靠?2026年深圳公司搬家推荐与评价,涵盖全程与应急场景痛点 - 十大品牌推荐
  • Java如何通过JSP实现网页端视频大文件的分片秒传?
  • Cadence allegro---Design Compare - 指南
  • 人工智能应用- 人机对战:06. 小结
  • 京东e卡如何回收?分享5个通用方法 - 京回收小程序
  • 闲置银泰百货卡怎么处理?一键变现流程详解! - 团团收购物卡回收
  • 2026年上海靠谱的宠物口腔医生推荐,狗狗牙结石/猫咪口炎/牙科专科/狗狗牙科/宠物口腔/狗狗洗牙,宠物口腔医生推荐榜单 - 品牌推荐师
  • Chapter 4-23. Troubleshooting Congestion in Fibre Channel Fabrics - 指南
  • AI
  • 超实用技巧!盒马鲜生卡回收省钱大法 - 团团收购物卡回收
  • 2026京津冀冰棍专业供应商推荐,靠谱的定制冰棍供应商有哪些 - 工业设备
  • 聊聊尊旅国际旅行社定制旅游服务,专业程度究竟如何? - mypinpai
  • 2026年上海小型搬家公司推荐:市场趋势与服务评测,涵盖企业搬迁核心场景与痛点 - 十大品牌推荐
  • 深圳靠谱的配眼镜店铺怎么收费,看看这份排行榜 - 工业品牌热点
  • 聊聊售后不错的旅游度假酒店哪家性价比高 - 工业品网
  • 短视频制作全流程智能体自动化闭环
  • 哪些网站可以把 AVIF 转换为 WebP?几款常见在线工具整理
  • 银泰百货卡如何快速变现?最简单的3个方法揭秘 - 团团收购物卡回收
  • 2026年有海外校友资源的小型留学机构推荐,哪家性价比高 - mypinpai
  • 2026年哪家长途搬家公司好?济南长途搬家公司推荐与排名,解决物品损坏与收费痛点 - 十大品牌推荐
  • 2026年食用面碱选购指南:优质厂商盘点与推荐,造纸淀粉/纸袋淀粉/食用纯碱/木薯淀粉/纸箱淀粉,食用面碱公司推荐排行 - 品牌推荐师