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

【软考中级软件设计师】数据表示:原码、反码、补码、移码、浮点数

数据表示

  • 一、数据表示
    • 1、整数的表示
      • (1) 原码
      • (2) 反码
      • (3) 补码:
      • (4) 移码
    • 2、浮点数的表示(IEEE 754标准)

一、数据表示

计算机使用的是二进制,也就是01的组合。所有的数据,无论是数字、文字还是图片、声音,最终都要转换成二进制形式存储和处理。

1、整数的表示

(1) 原码

  • 定义:最高位为符号位 (0正1负),其余为数值位。

  • 例:
    +5 → 00000101
    -5 → 10000101

  • 设计目的:直观表示正负数。

  • 不足 :
    1、运算复杂:加减法需判断符号位,硬件电路设计复杂。
    2、零的冗余:存在 +0(00000000)-0(10000000),浪费编码空间。

(2) 反码

  • 定义:(0正1负) 正数同原码;负数符号位不变,其余位取反

  • 例:
    +5 → 00000101
    -5 → 11111010

  • 设计目的: 简化减法运算,将减法转换为加法。 通过取反操作,负数可直接参与加法运算。例如:5 - 3 = 5 + (-3),硬件只需加法器即可实现减法。

  • 不足:
    1、循环进位问题:最高位进位需循环加到最低位(如 -0 的计算)。
    2、零的冗余:仍存在 +0(00000000) -0(11111111)

(3) 补码:

  • 定义:(0正1负) 正数同原码;负数为反码+1

  • 例:
    +5 → 00000101
    -5 → 11111011 (反码 11111010 +1

  • 设计目的:
    1、统一加减法运算,消除零冗余,简化硬件设计。
    2、唯一零表示:0 仅对应 00000000,无冗余。问:补码 10000000 表示多少?(答案在文章末尾)
    3、自然溢出处理:溢出结果直接截断,无需额外电路。
    4、符号位参与运算:符号位与数值位统一处理,无需特殊判断。

(4) 移码

  • 定义:移码(Excess-K,又称偏移二进制码)是一种用于浮点数指数部分的编码方式,其核心思想是通过固定偏移量 K 使所有数值均为正数,便于硬件比较大小。通常用于浮点数的指数部分(如IEEE 754中的偏移量127/1023)。

  • 例(8位移码,K=127):
    0 → 127 → 01111111
    -127 → 0 → 00000000
    在这里插入图片描述

  • 设计目的:便于浮点数比较,避免符号位干扰指数大小判断。
    优势:移码的二进制大小顺序与数值的实际大小顺序一致。

上点难度,附加题:什么情况下移码等于补码的符号位取反?(答案在文章末尾)

在这里插入图片描述

2、浮点数的表示(IEEE 754标准)

  • 方式:

    • 单精度(32位):1位符号(S) + 8位指数(E,偏移量127) + 23位尾数(M)。
    • 双精度(64位):1位符号 + 11位指数(偏移量1023) + 52位尾数。
  • 定义:
    浮点数是计算机用来表示小数或超大/超小数字的一种方式,类似科学计数法。例如 0.123 = 1.23 × 10⁻¹

    • 符号位(Sign):表示正负(0=正,1=负)。
    • 指数部分(Exponent):决定数字的“缩放倍数”(比如 10⁻¹ 里的1)使用移码表示。
    • 尾数部分(Mantissa):尾数存储的是二进制小数部分(比如 1.2323
  • 例子:
    IEEE 754标准(最常用的浮点数格式)
    以 32位单精度浮点数(float) 为例:

    符号位(1位)指数部分(8位)尾数部分(23位)
    SEEEEEEEEMMMMMMMMMMMMMMMMMMMMMMM

例:0.5 → 二进制0.1 → 规格化为1.0×2⁻¹,符号位0,指数-1+127=126 → 01111110,尾数0 → 0 01111110 000...0
在这里插入图片描述

  • 特殊值:
    在这里插入图片描述

答案:1、补码 10000000 表示-128 。反码:10000000 → 符号位 1,数值部分取反为 1111111
补码:反码 +1 → 1111111 + 1 = 10000000(进位溢出被截断)。 结果:-128(补码的特殊设计)。

·
2、什么情况下补移码等于补码的符号位取反?
在这里插入图片描述

http://www.dtcms.com/a/111604.html

相关文章:

  • sward V1.0.8版本发布,全面支持各种附件上传预览
  • 初识数据结构——算法效率的“两面性”:时间与空间复杂度全解析
  • yolov12检测 聚类轨迹运动速度
  • 与总社团联合会合作啦
  • Linux的: /proc/sys/net/ipv6/conf/ 笔记250404
  • 操作系统面经(一)
  • 2025年【陕西省安全员C证】报名考试及陕西省安全员C证找解析
  • Qt QTableView QAbstractTableModel实现复选框+代理实现单元格编辑
  • 进行性核上性麻痹:饮食调理为健康护航
  • SpringBoot项目报错: 缺少 Validation
  • 【NLP 55、投机采样加速推理】
  • 在线考试系统带万字文档java项目java课程设计java毕业设计springboot项目
  • 【matplotlib参数调整】
  • 2011-2019年各省地方财政国土资源气象等事务支出决策数数据
  • 如何理解缓存一致性?
  • Linux 安装 MySQL8数据库
  • LLM面试题六
  • Linux随机数
  • React: hook相当于函数吗?
  • 算法设计学习9
  • 【Groovy快速上手 ONLY ONE】Groovy与Java的核心差异
  • 常见的ETL工具分类整理
  • 嵌入式——Linux系统的使用以及编程练习
  • stm32+LTR-390UV使用教程含源码
  • 【算法竞赛】dfs+csp综合应用(蓝桥2023A9像素放置)
  • 深入理解时间复杂度与空间复杂度
  • DeepSeek能否用于对话系统(Chatbot)?技术解析与应用实例!
  • 《AI大模型应知应会100篇》第3篇:大模型的能力边界:它能做什么,不能做什么
  • 3.29-3 压力测试(不同用户)
  • 搭建工作流自动化工具n8n并配置deepseek大模型