Upload
toshi
View
139
Download
0
Embed Size (px)
DESCRIPTION
Arithmetic for Computers — 计算机中的算法. 目录. 基本运算 —— 符号数 —— 加、减、乘、除 浮点数运算 —— 浮点数表示 —— 加、减、乘、除. 基本运算 — 有符号数. 有符号数最高位表示符号位, 1 表示负数, 0 表示正数。 有符号数在计算机中用二进制的补码表示 正数的补码是其本身 原码: 01111111111111111111111111111111 补码: 01111111111111111111111111111111 数值大小: 负数的补码为除符号位外所有的位取反,然后加 1 : - PowerPoint PPT Presentation
Citation preview
Arithmetic for Computers — 计算机中的算法
目录基本运算 —— 符号数 —— 加、减、乘、除
浮点数运算 —— 浮点数表示 —— 加、减、乘、除
基本运算 —有符号数
有符号数最高位表示符号位, 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 寄存器即可。
基本运算 - 乘法
快速乘法运算电路:这种结构每一位乘法运算不是必须要一个周期,还有利于用流水线的方式同时进行多个乘法的运算。
基本运算 - 乘法
基本运算 ——除法
被除数( dividend )、除数( divisor )、商( quotient )、余数( remainder )之间的关系 :
下式为只有 1,0 的十进制乘法运算
基本运算 ——除法
除法运算电路中包括:一个 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
溢出( overflow ):指数太大下溢出( underflow ):指数为负数,且太小。
单精度( single precision ):
双精度( double precision ):
浮点数运算
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 -∞ ), truncate and 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 大类: