240 likes | 487 Views
Arithmetic for Computers — 计算机中的算法. 目录. 基本运算 —— 符号数 —— 加、减、乘、除 浮点数运算 —— 浮点数表示 —— 加、减、乘、除. 基本运算 — 有符号数. 有符号数最高位表示符号位, 1 表示负数, 0 表示正数。 有符号数在计算机中用二进制的补码表示 正数的补码是其本身 原码: 01111111111111111111111111111111 补码: 01111111111111111111111111111111 数值大小: 负数的补码为除符号位外所有的位取反,然后加 1 :
E N D
目录 • 基本运算 • ——符号数 • ——加、减、乘、除 • 浮点数运算 • ——浮点数表示 • ——加、减、乘、除
基本运算 —有符号数 有符号数最高位表示符号位,1表示负数,0表示正数。 有符号数在计算机中用二进制的补码表示 正数的补码是其本身 原码:01111111111111111111111111111111 补码:01111111111111111111111111111111 数值大小: 负数的补码为除符号位外所有的位取反,然后加1: 原码:10000000000000000000000000000010 补码: 11111111111111111111111111111110 数值大小:
基本运算 —加法、减法 减法可以通过加上减数的补码来表示: 例如7-6可表示为 溢出(overflow): MIPS通过异常(exception),也叫做中断(interrupt)方式来检测溢出。
基本运算-乘法 下式为只有1,0的十进制乘法运算 二进制运算与其类似:
基本运算 -乘法 乘法运算包含:一个32位乘数寄存器,一个64位被乘数寄存器,一个64位积(product)寄存器(初始值为0)。运算流程图如右图
基本运算 -乘法 改进的乘法运算电路结构: 初始时,乘数放在product寄存器低32位,高32位为0。在计算中右移product寄存器即可。
基本运算 -乘法 快速乘法运算电路:这种结构每一位乘法运算不是必须要一个周期,还有利于用流水线的方式同时进行多个乘法的运算。
基本运算——除法 下式为只有1,0的十进制乘法运算 被除数(dividend)、除数(divisor)、商(quotient)、余数(remainder)之间的关系:
基本运算——除法 除法运算电路中包括:一个32位quotient寄存器,一个64位divisor寄存器和一个64位remainder寄存器。 初始状态:除数放在divisor寄存器的高32位,低32位为0;remainder寄存器存放被除数;quotient寄存器初始化为0。 右图为除法运算流程图
基本运算——除法 举例: 7除以2(十进制),假设运算为4位数,即0000 0111除以0010,运算过程如下:
基本运算——除法 改进的除法电路 初始状态,remainder寄存器高32位存放被除数,低32位为0。首先右移remainder寄存器,使被除数与除数最高位对齐。运算时, remainder左移,相当于被除数向左移位,商放在低32位。
基本运算——除法 带符号除法运算: 余数的符号必须与被除数相同。例如
基本运算——除法 乘法、除法相关MIPS指令 Hi,Lo为两个专用寄存器
目录 • 基本运算 • ——符号数 • ——加、减、乘、除 • 浮点数运算 • ——浮点数表示 • ——加、减、乘、除
浮点数运算 浮点数表示方法: 1.xxxxxxx=2yyyy 单精度(single precision): 双精度(double precision): 溢出(overflow):指数太大 下溢出(underflow):指数为负数,且太小。
浮点数运算 IEEE 754浮点数标准: bias:单精度为127,双精度为1023
浮点数运算 举例: -0.75用单精度表示
浮点数运算 举例: -0.75用双精度表示
浮点数运算 —浮点数加法 举例:计算0.5加-0.4375(保持4位精度) 0.5=1.000*2-1,-0.4375=-1.110*2-2 Step1. Step2. Step3. Step4. round the sum
浮点数运算 —浮点数乘法 举例:计算0.5乘以-0.4375(保持4位精度) 0.5=1.000*2-1,-0.4375=-1.110*2-2 Step1. Step2. Step3. 检查结果是否规范化,是否溢出 Step4. round the product Step5. 设置符号
浮点数运算——近似计算 近似计算: IEEE754 标准要求采用额外2比特数据用于近似计算,分别称为guard,round。 四种近似方法:round up(toward +∞),round down(toward -∞),truncateand round to nearest even.
浮点数运算——MIPS指令 浮点数加法: 单精度 add.s 双精度 add.d 浮点数减法:单精度 sub.s 双精度 sub.d 浮点数乘法:单精度 mul.s 双精度 mul.d 浮点数除法:单精度 div.s 双精度 div.d 浮点数比较:单精度c.x.s 双精度c.x.d (x可以是eq, neq, lt, le, gt, ge) 浮点数跳转:branch, true (bclt) branch, false (bclf)
浮点数运算—— IA-32 IA-32(Intel Architecture)是Intel的一种处理器架构。它与MIPS不同的是它没有Hi,Lo两个寄存器,而是一个64位的寄存器。同时他扩展了60种浮点数操作指令。 IA-32浮点操作指令可分为4大类: