news 2026/10/18 13:46:00

计算机组成原理|数据与文字的表示方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
计算机组成原理|数据与文字的表示方法

前言
在计算机硬件体系当中,所有信息都不能以我们人类熟悉的十进制数字、汉字、符号直接存在硬件里面。不管是数字计算、文本信息,最后全部要转换成为二进制比特串。第二章作为整本书承上启下的关键章节,一边衔接第一章计算机系统概述的硬件基础,另一边为后面第三章存储器、第四章指令系统打下底层基础。本章主要分为两大模块,第一模块是各类数据的表示方式,包含定点数、浮点数、四种机器编码、字符汉字编码、校验码;第二模块围绕定点、浮点运算展开,讲解运算规则、硬件实现思路。

一.数据格式

定义:数据格式用来规定二进制编码当中小数点所处的位置,计算机分为定点数与浮点数两大类型。**小数点在二进制编码里面并没有真实硬件存储点位,**依靠人为约定规则确定位置。这是很多同学容易踩坑的考点:小数点是逻辑约定,不是真实存在某一个bit位。

1. 定点数

定点数:指小数点位置是预先固定约定好,在运算全过程当中小数点位置不会发生任何改变。定点数又细分为定点整数与定点小数。

**定点整数:**约定小数点位置,在全部数值比特的最右侧。所有二进制位全部用来表示整数的数值,**符号位放在最高位。**举例子,8位字长定点整数,最高1位符号位,剩下7位存数值,能够表示整数范围‑127~+127(原码)。

**定点小数:**约定小数点位置,放在符号位和数值位中间。也就是说最高位是符号,紧接着就是逻辑小数点,后面全部比特代表小数部分,定点小数只能够表示绝对值小于1的小数。

概念因果推导:
✅优点:定点数硬件实现电路十分简单,控制逻辑少,硬件成本低。
❌缺点:**表示数值的范围非常有限。**如果既要处理很大整数,又要处理很小小数,定点数很难兼顾。
互推关系:硬件追求简单低成本 ⇒ 使用定点数;需要处理跨度很大的数值,定点数就会出现溢出,需要引入浮点数。

2.浮点数

现实场景当中,科学计算会遇到极大或者极小数字,定点数远远不够使用,于是设计浮点数。

**M:**尾数,代表有效数字部分;

**E:**阶码,代表小数点移动多少位,决定数值范围。

尾数本身是一个定点小数,阶码是定点整数。浮点数把数值拆分成两部分独立存储。
**规格化浮点数:**为充分利用尾数有效比特,规定尾数最高数值位必须为1。规格化的目的,避免有效数字浪费,保证同一个数字只有唯一编码。

推导关系:
阶码E位数越多 ⇒ 可以表示的数值范围越大;
尾数M位数越多 ⇒ 数值精度越高;

浮点数硬件代价:需要分别对阶码、尾数两套部件运算,对比定点数,电路复杂度明显上升。

3. 原码、反码、补码、移码

**定义:**机器码,真值就是我们日常书写十进制数字;机器码是真值映射之后,存储在计算机内部二进制编码。同一个真值,可以拥有四种不同机器码形式:**原码、反码、补码、移码。**考试高频计算题,经常要求四种编码互相转换。


1. 原码
**正数:符号位填0,**后面数值位直接抄写真值绝对值二进制。
**负数:符号位填1,**后面数值位抄写真值绝对值二进制。
原码特点:原码不能直接做减法运算。如果硬件直接使用原码减法,电路设计会非常复杂。

2. 反码
正数的反码与原码完全一模一样。
负数反码:符号位保持1不变,所有数值位逐位按位取反,0变1,1变0。
重点:**反码不会被计算机硬件直接拿来运算,**它仅仅是一个中间过渡编码,作用是用来求取补码。很多同学做题会混淆,误以为计算机运行依靠反码,这是典型易错考点。

3. 补码(计算机实际使用编码)
正数补码和原码、反码三者完全相等。
负数补码:符号位不变,数值位取反之后整体再加1。
补码两大核心优势:
第一点,零的编码唯一,不存在正负两个0;
第二点,可以把减法运算等价转换成为加法运算。

重大推导关系:补码 ⇒ 减法变加法 ⇒ CPU硬件只需要一套加法器,不需要单独设计减法器,极大简化ALU硬件。这就是现代计算机全部采用补码存储运算的根本原因。

4. 移码
移码也叫增码,计算方式:真值加上一个固定偏移量。
移码和补码关系:两者除符号位完全相反,其余全部比特一模一样。
移码专门给浮点数阶码使用。为什么阶码要用移码?因为移码可以直接使用无符号数硬件比较大小,不需要额外判断符号,硬件判断阶码大小更加简单高效。


4. 字符与字符串的表示方法

计算机不仅仅要处理数字,还需要处理字母、符号这类非数值数据。字符本身是图形符号,硬件只能保存二进制,因此必须完成编码映射。

**ASCII码:**7位二进制编码,一共128个编码。其中包含大小写英文字母、阿拉伯数字,还有回车、退格等不可见控制字符。在内存存储的时候,一个ASCII字符占用完整1字节8bit,最高位补0填充。

字符串,就是一串连续的ASCII字符,在内存当中按照顺序连续存放。不同编程语言,字符串结束标记规则不一样,有的增加结束符,有的单独记录字符串长度。

概念流转关系:可视化字符符号 → ASCII二进制编码 → 内存字节连续存储,形成字符串。

5.汉字的表示和编码

汉字系统远比英文ASCII复杂,汉字数量巨大,几千常用汉字。一套编码无法同时搞定输入、交换、存储、显示打印,因此划分四类编码,每一类编码对应一个工作阶段,各司其职。很多考题会考四类编码的作用、互相之间转换关系。

1. 输入码:面向人输入使用。我们键盘打字,拼音、五笔都属于输入码。同一个汉字,可以拥有多种不同输入码。输入码任务:把键盘按键序列,转换成对应的汉字。

**2. 国标码:**汉字信息交换编码。作用:不同电脑、不同设备之间传递汉字数据,统一交换标准。

**3. 机内码:**计算机内存里面实际存放汉字的编码。国标码经过字节偏移处理得到机内码。一台计算机内部全部使用机内码保存汉字。

**4. 字形码:**点阵图形编码。机内码仅仅代表是哪一个汉字,但是看不到长什么样子。字形码保存汉字点阵像素信息,屏幕显示、打印机输出的时候,调用字形码画出汉字。

完整因果链条:键盘敲击产生输入码 → 转换为国标码 → 偏移得到机内码存入内存;输出汉字时,拿机内码去查找字形码,渲染点阵图形输出。

6. 校验码

**定义:**存储器读写、数据总线传输过程,电路会受到电磁干扰,二进制比特有可能发生翻转,0变成1,1变成0。校验码就是附加一组冗余二进制位,用来检测数据传输存储过程当中是否出现错误。

二.奇偶校验码

在原始数据基础上增加1位奇偶校验位。奇校验:整体二进制里面1的总个数为奇数;偶校验:整体1总个数为偶数。接收端重新统计1的数量判断是否出错。
局限性:仅仅能够检测奇数个比特发生翻转,如果同时两位出错,奇偶校验无法发现。奇偶校验只检错,没有纠错能力。硬件简单,成本低。

三.CRC循环冗余校验码

原始数据后面追加多位校验余数。检错能力远强于奇偶校验,广泛用于磁盘、网络通信。部分场景不仅检测错误,还可以自动纠正部分比特错误。

推导逻辑:硬件信道存在噪声干扰 ⇒ 比特存在出错概率 ⇒ 需要增加冗余校验码提升系统可靠性。校验码靠增加额外比特冗余,换取可靠性提升。

四. 定点加法、减法运算

计算机内部全部运算基于补码完成。定点数运算,就是对补码形式二进制进行运算.

1. 补码加法

运算规则:符号位和数值位完全同等看待,一起参与二进制加法运算。相加之后得到的结果,依旧是补码格式,直接可以拿来继续参与后续运算。不需要分开处理符号和数值,这是补码一大优势。

2. 补码减法


求[-y]{补}操作:对[y]{补}全部二进制位,包括符号位在内,逐位取反,整体再加1。这个操作称之为求补运算。
**核心逻辑:**减法运算不在硬件单独实现,把减法等价转换成加上减数负数的补码。加法器一套硬件,同时实现加法与减法,简化ALU硬件设计。

3.溢出概念与检测方法*

**定义:**溢出,运算结果超出当前机器字长可以表示数值范围,得到错误运算结果。⚠️一定要区分:进位不等于溢出。进位只是最高位向外多出比特;溢出代表结果数值已经失真错误。
溢出两种判断手段:

**1. 符号位判断法:**只有两个同符号数相加才会溢出。正数+正数,结果符号变成负数;负数+负数,结果符号变成正数,判定溢出。推论:一正一负两个数字相加,永远不会发生溢出。

**2. 进位判断法:**观察符号位产生进位,和最高数值位产生进位。**两者不相等,**判定溢出。

易错点:溢出属于考试高频选择题,很多同学把进位当成溢出,做题反复出错。

五. 加法器

加法器是ALU最核心基础部件,所有加减乘除最终都依赖加法器。

1. 行波进位加法器*

低位产生进位,一级一级向高位传递。低位算完产生进位,高位才可以开始计算。
因果特点:电路简单,硬件门数量少。但是运算延迟大,二进制位数越多,等待进位时间越长,运算速度慢。

2. 先行进位加法器(并行进位)

不再等待低位进位传递,依靠额外组合逻辑电路,直接提前一次性算出全部位进位信号。
推导关系:增加更多与或门硬件开销,消除进位等待时间,大幅度提升加法运算速度。现代CPU当中普遍使用先行进位方案。

3. 定点乘法运算(原码一位乘法)

计算机硬件不会直接设计复杂乘法电路,为节约硬件,乘法运算拆解为重复加法加上移位操作。原码一位乘法,符号位与数值部分分开处理。

符号位:两个乘数符号位进行异或运算,得到乘积最终符号。
数值部分:取两个数绝对值,循环执行加法、右移操作。

运行逻辑:依次查看乘数每一位,如果当前位为1,就把被乘数加到部分积;如果为0,不加。完成之后整体右移,循环直到乘数全部比特处理结束。

推导关系:乘法 ⇋ 多次加法+移位,复用加法器硬件,不需要专门独立乘法硬件。

4. 定点除法运算

除法同样复用加法器硬件,转化成为加减运算配合移位操作。分为恢复余数法、不恢复余数法(加减交替除法)。

**1. 恢复余数法:**每一步拿余数减除数,如果得到余数小于0,代表不够减,必须把除数再加回来,也就是恢复余数,之后再移位。缺点:流程步骤不固定,控制逻辑复杂,硬件实现麻烦。

**2. 不恢复余数法,又叫加减交替除法。**不再做恢复余数步骤。余数为负,不需要恢复,直接移位之后下一步改成加除数。整套算法步骤规整统一,控制电路简单,是计算机硬件实际使用方案。

概念互推:除法运算等价反复加减、移位操作,复用ALU加法器硬件资源。

5. 定点运算器的组成

**定义:**定点运算器是CPU内部负责算术运算、逻辑运算的硬件部件。三大核心组成:ALU算术逻辑单元、通用寄存器组、内部总线。

**1. ALU算术逻辑单元:**运算核心,既可以做加减算术运算,也可以完成与、或、非、异或逻辑运算。

**2. 通用寄存器组:**存放原始操作数、运算中间结果。访问速度远远快于内存。

**3. 内部总线:**一组公共的数据传输通路。各个部件通过总线互相传递数据,减少独立信号线数量,简化硬件布线。

完整数据流动流程:通用寄存器的数据放到内部总线,输送给ALU;ALU完成运算,运算结果再经由内部总线写回到通用寄存器。数据来回流动,完成整套运算。

6. 浮点运算方法和浮点运算器

浮点数 N=M*2^E,M尾数,E阶码;尾数规格化存储,阶码使用移码保存。浮点数加减法,不能直接尾数相加,必须严格执行固定五步流程。

**1. 对阶:**两个浮点数阶码不一样,尾数不能直接加减。把阶码统一,规则:**小阶向大阶对齐,尾数右移。**禁止大阶向小阶对齐,会直接丢失高位有效数字,数据彻底失真。

**2. 尾数加减:**尾数本身是定点小数,使用补码完成加减法运算。

**3. 规格化处理:**加减之后尾数有可能不再满足规格化要求,需要左规或者右规,调整尾数和阶码,重新回到规格化格式。

**4. 舍入处理:**尾数右移的时候,低位比特被丢弃,需要舍入算法补偿误差,常见0舍1入法。

**5. 溢出判断:**浮点数溢出只看阶码,和尾数无关。尾数出现溢出,可以通过规格化修复;阶码超出存储范围,才是真正浮点数溢出。

高频考点总结:尾数溢出可修复;阶码溢出代表浮点数真正溢出。

第二章章节小结

第二章整体知识链路:现实数值 → 二进制编码 → 四种机器码 → 定点加减乘除运算 → 运算器硬件结构 → 浮点数整套运算流程。

  1. 补码核心意义:减法转换加法,硬件只需要加法器。

  2. 乘除法硬件思想:转化加法+移位,复用ALU。

  3. 溢出区分进位;浮点数溢出看阶码。

  4. 汉字四类编码分工不同,输入码、国标码、机内码、字形码各司其职。

  5. 校验码依靠冗余比特检测传输存储错误。

(本篇实际字数:4462)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/18 13:44:13

单通道脑电自动睡眠分期:从波形到五分类的完整实现

简介:这是一份基于 Python 的单通道脑电信号自动睡眠分期研究项目,面向计算机相关专业正在做毕业设计、课程设计或期末大作业的学生,也适合需要项目实战练习的学习者。压缩包共 22 个文件,约 10.85MB,整体以 Python 源…

作者头像 李华
网站建设 2026/10/18 13:43:37

外卖系统+E:从架构设计到高并发实战的核心技术解析

“外卖系统E”这个标题乍看像是一个简单的功能叠加,真正拆开看,它是外卖系统从“能用”走向“好用”的分水岭。做外卖系统的团队很多,但大部分版本都停在了“订单能下、单子能接、骑手能送”的层面,再往后就是效率上不去、并发扛不…

作者头像 李华
网站建设 2026/10/18 13:43:13

uni-app scroll-view滚动失效、定位与跨端适配完整指南

做 uni-app / 微信小程序开发,几乎绕不开scroll-view这个组件。它就像一块带边界的可滚动容器,分类页右侧商品列表、聊天消息流、tab 切换下的长内容、横向导航栏,全都指望它。但真用起来,它也是“坑王”:滚动失效、定…

作者头像 李华
网站建设 2026/10/18 13:42:33

Python属性拦截四钩子:__setattr__、__getattr__、__delattr__与__call__实战

简介:这份PDF资料面向已掌握Python基础、希望深入理解面向对象机制的开发者,系统讲解__setattr__、 getattr 、__delattr__与__call__四个魔法方法的用法。内容从属性设置、属性读取、属性删除到实例可调用四个维度展开,每个方法均配有可运…

作者头像 李华
网站建设 2026/10/18 13:41:50

从superpowers到AI科学发现系统:自动化如何接管流程性工作

早上一打开代码托管平台的热榜,就看到一行挺扎眼的标题:superpowers今日突破12万星加冕。往下滑了两屏,又看到一个低调得多的名字——AI自动科学发现系统v2,今天悄然上榜。我把这两个页面反复看了几遍,越看越觉得这两件…

作者头像 李华