一、引言
核心技术概念与背景
数据表示是计算机系统硬件层的基础机制,指计算机硬件对数值、字符等信息的二进制编码规则。早期计算机采用十进制存储与运算,因硬件复杂度高逐渐被二进制取代,逐步形成了进制转换、定点数编码、浮点数编码等完整的技术体系,是所有上层运算的底层支撑。
软考中的重要性
该知识点属于计算机系统知识模块的核心考点,在历年软考软件设计师考试中分值占比为 2-4 分,考查频率为 100%,题型以客观题为主,常见考点包括补码运算特性、IEEE 754 标准格式、浮点数范围与精度分析等,是考生必须掌握的基础知识点。
本文知识点覆盖
本文将系统讲解四大核心模块:进制转换与存储单位基础、定点数四种编码机制、浮点数基本原理、IEEE 754 工业标准,最后结合历年真题梳理高频考点与答题技巧。
二、基础概念:进制转换与存储单位
进制表示与转换规则
进制定义与表示方法
二进制 由 0、1 两个符号组成,基数为 2 ,遵循逢二进一规则,通常加后缀 B 标识 ;八进制 由 0-7 八个符号组成,基数为 8 ,后缀为 O 或 Q ;十六进制 由 0-9、A-F(或 a-f)十六个符号组成,基数为 16 ,后缀为 H。任意进制数的按权展开式为:∑(数码 × 基数 ^ 权值),权值从右往左从 0 开始递增。
进制转换方法
十进制 转 R 进制采用 "除 R 取余法 ",整数部分除 R 取余、逆序排列,小数部分乘 R 取整、顺序排列;二进制与八进制转换遵循 "三位一组" 规则,整数部分从右往左补位,小数部分从左往右补位;二进制与十六进制转换遵循 "四位一组" 规则,分组方式与八进制转换一致。以十进制 19 为例,二进制表示为 10011B,八进制为 23O,十六进制为 13H。
存储单位换算规则
最小存储单位为比特(Bit),表示 1 位二进制数;基本存储单位为字节(Byte),1Byte=8Bit。存储单位按 1024(2^10)进行量级换算:1KB=1024Byte,1MB=1024KB,1GB=1024MB,1TB=1024GB。在网络带宽等场景下采用 1000(10^3)换算,软考中如无特殊说明均采用 1024 换算规则。

不同进制转换流程图、存储单位层级关系图
三、定点数编码:原码、反码、补码、移码
四种编码的定义与转换规则
定点数约定小数点位置固定,分为定点整数(小数点在最低位之后)和定点小数(小数点在符号位之后),以 8 位定点整数为例,四种编码规则如下:
原码
最高位为符号位,0 表示正数,1 表示负数,其余位为数值的绝对值二进制表示。+19 的原码为 00010011,-19 的原码为 10010011。原码表示直观,但存在 + 0(00000000)和 - 0(10000000)两个零值,且减法运算需要单独处理符号位,硬件实现复杂度高。
反码
正数的反码与原码一致;负数的反码为原码符号位不变,其余位按位取反。+19 的反码为 00010011,-19 的反码为 11101100。反码同样存在两个零值,仅作为补码转换的中间编码,无实际运算价值。
补码
正数的补码与原码一致;负数的补码为反码加 1。+19 的补码为 00010011,-19 的补码为 11101101。补码仅存在一个零值(00000000),原码中的 - 0 在补码中表示为 - 128,可多表示一个最小负数。补码的核心优势是可将减法转换为加法运算,即 A-B = A + (-B) 的补码,运算时符号位与数值位统一处理,无需额外判断符号,大幅简化运算电路设计。
移码
移码通常用于浮点数的阶码编码,规则为补码的符号位取反,其余位不变。+19 的移码为 10010011,-19 的移码为 01101101。移码的特点是所有数值按编码值从小到大排序与真实值大小顺序一致,便于阶码的大小比较操作。
四种编码的运算特性对比
| 编码类型 | 零值数量 | 减法运算支持 | 符号位处理 | 典型应用场景 |
|----------|----------|--------------|------------|--------------|
| 原码 | 2 | 不支持 | 单独处理 | 数值显示 |
| 反码 | 2 | 不支持 | 单独处理 | 中间转换 |
| 补码 | 1 | 支持 | 统一运算 | 加减运算 |
| 移码 | 1 | 不支持 | 大小比较 | 浮点数阶码 |
以 19-23 运算为例,补码计算过程为:19 的补码(00010011) + (-23) 的补码(11101001)= 11111100,转换为原码为 10000100,对应十进制 - 4,运算结果正确。

四种编码转换关系图、补码加减运算流程图
四、浮点数基本原理
浮点数表示格式
浮点数通过类比科学计数法实现大范围数值表示,通用格式为 N = 2^E × M,其中 E 为阶码(带符号整数),决定数值的范围;M 为尾数(纯小数),决定数值的精度。存储时由四部分组成:阶符(阶码的符号位)、阶码数值、数符(尾数的符号位)、尾数数值。
规格化浮点数规则
为保证尾数精度最大化,浮点数通常需要进行规格化处理,即尾数 M 的绝对值满足 1/2 ≤ |M| < 1。对于原码表示的尾数,规格化后最高位为 1;对于补码表示的尾数,正数规格化后最高位为 1,负数规格化后最高位为 0。当阶码超出表示范围时发生溢出,阶码小于最小值时为下溢,通常按机器零处理;阶码大于最大值时为上溢,需要进行异常处理。
范围与精度的权衡关系
浮点数的总位数固定时,阶码位数越多,可表示的数值范围越大,但尾数位数减少,精度降低;反之阶码位数越少,范围越小但精度越高。例如 32 位浮点数若阶码占 8 位、尾数占 23 位,可表示范围约为 10^-38 ~ 10^38,精度约为十进制 6-7 位有效数字;若调整为阶码占 10 位、尾数占 21 位,范围可提升至 10^-308 ~ 10^308,但精度下降至 5-6 位有效数字。

浮点数存储结构示意图、规格化浮点数范围对比图
五、IEEE 754 浮点数工业标准
标准存储格式
IEEE 754 是目前通用的浮点数工业标准,包含 32 位单精度和 64 位双精度两种主流格式,统一规则如下:
通用公式
真实值 V = (-1)^S × (1.M) × 2^(E - 偏置常数),其中 S 为符号位,0 表示正数,1 表示负数;M 为尾数的小数部分,省略整数部分的 1,可多存储一位有效数字;E 为阶码的无符号编码值,采用移码表示。
32 位单精度格式
S 占 1 位,E 占 8 位,M 占 23 位,偏置常数为 127。阶码 E 的取值范围为 1~254(0 和 255 作为特殊值保留),可表示的数值范围约为 ±1.4×10^-45 ~ ±3.4×10^38。
64 位双精度格式
S 占 1 位,E 占 11 位,M 占 52 位,偏置常数为 1023。阶码 E 的取值范围为 1~2046,可表示的数值范围约为 ±4.9×10^-324 ~ ±1.8×10^308。
转换示例
以十进制 19.0 转换为 32 位 IEEE 754 格式为例:
第一步,将 19.0 转换为二进制:10011.0 = 1.0011 × 2^4;
第二步,确定各字段值:S=0(正数),E=4+127=131,二进制为 10000011,M=00110000000000000000000;
第三步,拼接得到完整编码:0 10000011 00110000000000000000000,转换为十六进制为 0x41980000。
特殊值规则:E=0 且 M=0 表示机器零;E=255 且 M=0 表示无穷大;E=255 且 M≠0 表示非数值(NaN)。

IEEE 754 32 位 / 64 位存储格式对比图、转换步骤示意图
六、真题解析与考点总结
典型真题解析
补码特性真题
题目:以下关于补码的描述中,错误的是( )
A. 补码中零的表示唯一
B. 补码减法可转换为加法运算
C. 相同位数下补码比原码多表示一个正数
D. 补码运算时符号位与数值位可统一处理
解析:答案为 C。8 位原码的表示范围为 - 127~+127,补码的表示范围为 - 128~+127,多表示的是一个最小负数,而非正数,其余选项均为补码的正确特性。
浮点数特性真题
题目:浮点数的精度由( )决定,数值范围由( )决定
A. 阶码位数 尾数位数
B. 尾数位数 阶码位数
C. 阶符位数 数符位数
D. 数符位数 阶符位数
解析:答案为 B。尾数位数决定有效数字位数,即精度;阶码位数决定指数范围,即数值的表示范围。
常见易错点梳理
一是补码的范围计算,n 位定点整数补码的范围为 - 2^(n-1) ~ 2^(n-1)-1,原码和反码的范围为 -(2^(n-1)-1) ~ 2^(n-1)-1;二是 IEEE 754 标准的隐含 1,计算真实值时尾数需加上整数部分的 1,阶码需减去偏置常数;三是浮点数溢出判断,仅当阶码超出范围时才发生溢出,尾数溢出可通过右规操作调整。
七、总结与建议
核心技术要点提炼
第一,进制转换遵循按权展开和除基取余规则,存储单位默认按 2^10 换算;第二,补码是定点数运算的核心编码,零值唯一且支持减法转加法,移码用于阶码大小比较;第三,浮点数通过阶码和尾数分别控制范围与精度,规格化可最大化尾数利用率;第四,IEEE 754 标准采用隐含 1 的尾数表示,32 位偏置常数为 127,64 位为 1023。
软考考试重点提示
高频考点包括:补码的运算特性与表示范围、四种编码的转换方法、IEEE 754 的格式与转换、浮点数范围与精度的影响因素。答题时需注意:计算补码时负数需在反码基础上加 1,IEEE 754 转换时不要遗漏隐含的 1 和阶码偏置。
实践应用建议
学习时需手动完成至少 5 个不同数值的编码转换练习,尤其是负数的补码转换和 IEEE 754 格式转换,结合历年真题巩固知识点。实际开发中处理高精度运算场景时,需明确浮点数的精度损失问题,必要时采用十进制编码或定点数运算方案。
技术发展趋势
当前针对浮点数的优化方向包括:AI 计算场景下的 16 位半精度、8 位整数等低精度编码,可在损失有限精度的前提下大幅提升运算效率;新型存算一体架构中的数值编码优化,进一步降低数据传输与运算的硬件开销。