目录
一. 数据与文字表示方法
在计算机中,所有信息最终都会转换为二进制形式进行存储和处理。二进制是计算机的“语言”,由0和1两个数字组成。每个0或1称为一个比特(bit),8个比特组成一个字节(byte)。
例如,十进制数10在二进制中表示为“1010”,十进制数65在二进制中表示为“01000001”。
为了便于人们理解和书写,计算机还提供了其他一些数据表示方法,例如八进制和十六进制。
1. 八进制表示
八进制使用0到7的八个数字来表示数据。每个八进制数字表示3个比特。
例如,十进制数10在八进制中表示为“12”,八进制数56在二进制中表示为“01001100”。
2. 十六进制表示
十六进制使用0到9的十个数字和A到F的六个字母(A表示10,F表示15)来表示数据。每个十六进制数字表示4个比特。
例如,十进制数10在十六进制中表示为“A”,十六进制数AB在二进制中表示为“1010 1011”。
3. 其他表示方法
除了二进制、八进制和十六进制之外,计算机还可以使用其他一些表示方法,例如:
- 浮点数表示:用于表示小数和实数。
- 字符编码:用于表示文本信息。例如,ASCII码用于表示英语文本,GB2312用于表示简体中文文本。
- 数据结构:用于表示更复杂的数据类型,例如数组、链表、树等。
4. 转换
在不同的表示方法之间进行转换,可以使用以下公式:
- 二进制转八进制:将二进制数从右往左每三位一组,不足三位左边补0,然后用对应的八进制数字替换每三位二进制数。
- 八进制转二进制:将八进制数每三位一组,然后用对应的二进制数字替换每三位八进制数。
- 二进制转十六进制:将二进制数从右往左每四位一组,不足四位左边补0,然后用对应的十六进制数字替换每四位二进制数。
- 十六进制转二进制:将十六进制数每四位一组,然后用对应的二进制数字替换每四位十六进制数。
例如,十进制数10在二进制中表示为“1010”,八进制中表示为“12”,十六进制中表示为“A”。
二. 定点加减法运算
定点运算是指运算数据的整数位数和小数位数在运算前后保持不变的运算。在计算机中,定点运算通常使用二进制表示。
1. 二进制定点加减法规则
在二进制中,定点加减法运算的规则与十进制相似,但需要注意进位和借位。
加法
- 相同符号的二进制数相加,从最低位开始逐位相加,如果进位,则将进位加到下一位的和中。
- 不同符号的二进制数相加,先将较大的数减去较小的数,然后按照相同符号的二进制数相加的规则进行运算。
例如:
1101 + 1011 = 10010 (进位)
1001 - 0111 = 1010 (借位)
减法
- 相同符号的二进制数相减,从最低位开始逐位相减,如果借位,则将1借到下一位的被减数中。
- 不同符号的二进制数相减,先将较小的数加到较大的数,然后按照相同符号的二进制数相加的规则进行运算。
例如:
1101 - 1011 = 0010 (借位)
1001 - 1111 = 1100 (加数补码)
2. 定点加减法运算器
定点加减法运算器是用于执行定点加减法运算的数字逻辑电路。它通常由全加器或全减器组成,它们能够同时处理多个比特,提高运算速度。
全加器
全加器是用于执行三位二进制数相加运算的数字逻辑电路。它由两个半加器和一个进位逻辑单元组成。
全减器
全减器是用于执行三位二进制数相减运算的数字逻辑电路。它由两个半减器和一个借位逻辑单元组成。
3. 定点加减法运算的应用
定点加减法运算在计算机系统中有着广泛的应用,例如:
- 整数运算:计算机中的所有整数运算,包括加减乘除等,都是使用定点加减法运算器来实现的。
- 浮点数运算:浮点数运算通常需要将浮点数转换为定点数,然后使用定点加减法运算器来进行运算。
- 数字信号处理:数字信号处理中经常需要对数字信号进行加减运算,定点加减法运算器是常用的数字信号处理器件。
三. 定点乘法运算
定点乘法运算是指将两个定点数相乘的运算。在计算机中,定点乘法运算通常使用二进制表示。
1. 定点乘法运算的算法
定点乘法运算可以采用多种算法,常见的算法包括:
1.1 部分积算法
部分积算法是将一个乘数按位拆分,与另一个乘数分别相乘,然后将结果相加来计算乘积。
例如,计算“1011 * 1101”,可以将“1101”拆分为“1 * 1101”和“0 * 1101”,分别乘以“1011”,得到“1011 * 1 = 1011”和“1011 * 0 = 0”,相加得到结果“110011”。
部分积算法的优点是易于理解和实现,缺点是需要大量的移位和加法运算,效率较低。
1.2 布斯算法
布斯算法也称为移位算法,通过不断地将乘数右移一位,并将结果加到部分积中来计算乘积。布斯算法减少了移位和加法的次数,提高了运算效率。
布斯算法的基本思想是,将乘数按位拆分为正数和负数,然后根据乘数的符号对部分积进行加减。例如,计算“1011 * 1101”,可以将“1101”拆分为“1000 - 0100 + 0001”,分别乘以“1011”,得到“1011 * 1000 = 1011000”, “1011 * -0100 = -101100”, “1011 * 0001 = 1011”,相加得到结果“110011”。
布斯算法的优点是效率较高,缺点是实现较为复杂。
2. 定点乘法运算器的实现
定点乘法运算器是用于执行定点乘法运算的数字逻辑电路。它通常由以下几个部分组成:
- 乘数寄存器:用于存储乘数。
- 被乘数寄存器:用于存储被乘数。
- 部分积寄存器:用于存储部分积。
- 控制逻辑:用于控制乘数和被乘数的移位、加减等操作。
定点乘法运算器的实现方式可以根据具体的需求和应用场景进行选择。例如,如果需要高性能的定点乘法运算器,可以使用布斯算法;如果需要低成本的定点乘法运算器,可以使用部分积算法。
四. 定点除法运算
定点除法运算是指将一个定点数除以另一个定点数的运算。在计算机中,定点除法运算通常使用二进制表示。
1. 定点除法运算的算法
定点除法运算可以采用多种算法,其中以原码出发算法和并行除法器算法较为常见。
1.1 原码出发算法
原码出发算法是基于原码表示法,通过不断地将除数右移一位,并将结果加到商中来计算商。例如,计算“1011 / 11”,可以得到:
1011 / 11 = 10 -1 = 01
商为“9”,余数为“1”。
原码出发算法的优点是易于理解和实现,缺点是效率较低,需要大量的移位和加减运算。
1.2 并行除法器算法
并行除法器算法使用专门的硬件电路——并行除法器来实现除法运算。并行除法器能够同时处理多位数,并通过移位和减法来计算商和余数。
并行除法器算法的优点是效率较高,缺点是实现较为复杂,需要专门的硬件电路。
2. 定点除法运算器的实现
定点除法运算器是用于执行定点除法运算的数字逻辑电路。它通常由以下几个部分组成:
- 除数寄存器:用于存储除数。
- 被除数寄存器:用于存储被除数。
- 商寄存器:用于存储商。
- 余数寄存器:用于存储余数。
- 控制逻辑:用于控制除数和被除数的移位、加减等操作。
定点除法运算器的实现方式可以根据具体的需求和应用场景进行选择。例如,如果需要高性能的定点除法运算器,可以使用并行除法器算法;如果需要低成本的定点除法运算器,可以使用原码出发算法。
五. 定点运算器的组成
定点运算器是专门用于执行定点运算的硬件组件,是计算机的重要组成部分。它主要由以下几个部分组成:
1. 逻辑运算单元(ALU)
逻辑运算单元(ALU)是定点运算器中最核心的部件,负责执行各种逻辑运算和算术运算。常见的逻辑运算包括与、或、非等,常见的算术运算包括加、减、乘、除等。
ALU 通常由以下几个部分组成:
- 运算器:负责执行具体的运算操作,例如加减器、乘除器等。
- 控制器:控制运算器的操作,例如选择运算类型、设置运算参数等。
- 状态寄存器:存储运算结果和状态信息,例如进位标志、溢出标志等。
2. 多功能算术单元(MAC)
多功能算术单元(MAC)是在 ALU 的基础上扩展而来的功能更强大的运算单元,除了能够执行基本的逻辑运算和算术运算之外,还可以执行浮点数运算、矩阵运算等更复杂的运算。
MAC 通常由 ALU、控制逻辑和寄存器等部件组成。
3. 内部总线
内部总线是连接各个部件的数据通路,用于传输数据和控制信号。内部总线通常由数据总线、地址总线和控制总线组成:
- 数据总线:用于传输数据。
- 地址总线:用于指定数据的存储位置或来源。
- 控制总线:用于控制各个部件的操作。
六. 浮点运算方法和浮点运算器
浮点运算是一种重要的数值运算,它能够表示和处理非常大或非常小的数,在科学计算、工程设计、图形图像等领域有着广泛的应用。
1. 浮点数表示
浮点数是一种用于表示实数的数值表示方法。它由三个部分组成:
- 尾数:表示数字的小数部分。
- 基数:通常是2或10。
- 指数:表示数字的阶数,即小数点的位置。
例如,浮点数“1.101 * 2^3”表示数字 11.01,其中尾数是 1.101,基数是 2,指数是 3。
2. 浮点运算方法
浮点运算包括加减法运算、乘除法运算和比较运算等。
2.1 浮点加减法运算
浮点加减法运算与定点加减法运算类似,但需要考虑尾数的对齐和进位。例如,计算“1.1 + 2.3”时,需要将“1.1”转换为“0.0011 * 2^3 + 0.1010 * 2^2”,然后再进行加法运算,得到结果“0.0011 * 2^3 + 0.1100 * 2^2 + 0.0010 * 2^1 + 0.0001 * 2^0”,即“3.4011”。
2.2 浮点乘除法运算
浮点乘除法运算可以使用类似定点乘除法的算法,但需要考虑尾数的调整和指数部分。例如,计算“1.2 * 3.4”时,需要将“1.2”转换为“0.1200 * 2^3”,然后再进行乘法运算,得到结果“0.4080 * 2^6”,即“40.8”。
2.3 浮点比较运算
浮点比较运算用于比较两个浮点数的大小。常见的浮点比较运算包括大于、小于、等于、不等等。浮点比较运算的实现需要考虑指数部分的比较和尾数的比较。
3. 浮点运算器
浮点运算器是用于执行浮点运算的硬件组件。它通常采用流水线结构,将浮点运算分为多个阶段,每个阶段执行特定的操作,从而提高运算速度。常见的浮点运算器结构包括:
- 串行流水线:将浮点运算分为多个阶段,每个阶段依次执行,例如加法器、乘法器、除法器等。
- 并行流水线:多个阶段同时执行,例如同时进行指数运算、尾数运算等。
- 超标量流水线:多个流水线同时工作,例如同时执行多个浮点运算。
浮点运算器是计算机的重要组成部分,在科学计算、工程设计、图形图像等领域有着广泛的应用。