运算方法和运算器
数据与文字的表示方法 数据格式 数的机器码表示 字符与字符串的表示方法 汉字的表示方法 校验码 定点加法、减法运算 补码加法 补码减法 溢出概念与检测方法 基本的二进制加法/减法器 定点除法运算 原码除法算法原理 并行除法器 定点运算器的组成 逻辑运算 多功能算术/逻辑运算单元 内部总线 定点运算器的基本结构 浮点运算方法和浮点运算器 浮点加法、减法运算 浮点乘法、除法运算 浮点运算流水线 数据与文字的表示方法 数据格式 计算机中的数据分为数值数据和非数值数据(字符、汉字、图像、声音等)。数值数据在计算机内部采用二进制编码表示,根据小数点位置是否固定,分为定点表示法和浮点表示法。 定点表示法:小数点位置固定不变,分为定点整数(纯整数)和定点小数(纯小数)。定点数通常用补码或原码表示。 浮点表示法:形如 N = M × R^E,其中M为尾数(定点小数),E为阶码(整数),R为基数(通常为2)。IEEE 754标准定义了单精度(32位)、双精度(64位)等浮点数格式。 数的机器码表示 计算机中为了简化运算电路,通常使用以下机器码表示有符号数: 原码:符号位(0正1负)加绝对值。简单但不便于加减运算。 反码:正数同原码,负数符号位不变,其余位取反。主要用于中间计算。 补码:正数同原码,负数反码加1。补码可将减法转化为加法,是现代计算机最常用的有符号整数编码。 移码:在补码基础上加上偏置常数(通常2^(n-1)),用于浮点数的阶码表示。 字符与字符串的表示方法 字符编码采用标准编码方案,如ASCII(美国信息交换标准代码)使用7位或8位二进制表示128个基本字符(英文大小写字母、数字、标点符号、控制字符)。扩展ASCII(ISO-8859)支持西欧语言。Unicode(如UTF-8、UTF-16)统一表示全世界所有字符,支持多语言混排。字符串在内存中通常以连续字节存储,以空字符(’\0’)或长度字段作为结束标志。 汉字的表示方法 汉字编码分为输入码(拼音、五笔等)、机内码(存储编码,如GB2312、GB18030、BIG5、Unicode中的汉字区)、字形码(点阵或矢量字体)。国家标准GB2312包含6763个常用汉字,GB18030兼容GB2312并扩展至7万余汉字。在Unicode中,汉字位于CJK统一表意文字区(U+4E00至U+9FFF)。 校验码 校验码用于检测数据在传输或存储过程中的错误。常见类型: 奇偶校验码:增加一位奇偶位,使整个码字中1的个数为奇数(奇校验)或偶数(偶校验)。只能检测奇数个错误,不能纠错。 海明校验码:通过在数据位之间插入多个校验位,能够检测并纠正一位错误(或者检测两位错)。 循环冗余校验(CRC):将数据视为多项式,除以生成多项式得到余数作为校验码。CRC能检测突发错误,广泛用于网络通信和存储设备。 定点加法、减法运算 补码加法 补码加法的公式:[X+Y]补 = [X]补 + [Y]补 (mod 2^n)。即直接将两个数的补码相加,若最高位产生进位则丢弃该进位(模2^n运算)。正负数均可直接相加,无需特殊处理。例如:X=5(0101),Y=-3(1101),和=2(0010)。 补码减法 补码减法转化为加法:[X-Y]补 = [X]补 + [-Y]补。其中[-Y]补可通过将[Y]补连同符号位一起取反后加1得到。例如:X=5(0101),Y=3(0011),则[-Y]补=1101,相加得0010(即2)。 溢出概念与检测方法 当运算结果超出机器数表示范围时发生溢出。对于补码加减法,溢出检测方法: 双符号位法(变形补码):用两个符号位,如00为正,01为上溢,10为下溢,11为负。结果的两个符号位不同则表示溢出。 单符号位法:比较操作数的符号和结果的符号。若两个正数相加得负数,或两个负数相加得正数,则溢出。进位检测法:最高有效位的进位与符号位的进位不同时溢出。 基本的二进制加法/减法器 一位全加器(FA)是实现加法/减法的基础。它有三个输入:A、B、低位进位Cin;两个输出:和S、进位Cout。逻辑表达式:S = A ⊕ B ⊕ Cin;Cout = AB + (A⊕B)Cin。多个全加器串联构成行波进位加法器(RCA)。减法可通过将减数取反(按位取反后加1,即使用异或门控制)并设置初始进位为1来实现。为提高速度,可采用超前进位加法器(CLA)并行计算进位。 ...