24
Arithmetic for Computers 计计计计计计计

Arithmetic for Computers — 计算机中的算法

  • Upload
    toshi

  • View
    139

  • Download
    0

Embed Size (px)

DESCRIPTION

Arithmetic for Computers — 计算机中的算法. 目录. 基本运算 —— 符号数 —— 加、减、乘、除 浮点数运算 —— 浮点数表示 —— 加、减、乘、除. 基本运算 — 有符号数. 有符号数最高位表示符号位, 1 表示负数, 0 表示正数。 有符号数在计算机中用二进制的补码表示 正数的补码是其本身 原码: 01111111111111111111111111111111 补码: 01111111111111111111111111111111 数值大小: 负数的补码为除符号位外所有的位取反,然后加 1 : - PowerPoint PPT Presentation

Citation preview

Page 1: Arithmetic for Computers — 计算机中的算法

Arithmetic for Computers — 计算机中的算法

Page 2: Arithmetic for Computers — 计算机中的算法

目录基本运算 —— 符号数 —— 加、减、乘、除

浮点数运算 —— 浮点数表示 —— 加、减、乘、除

Page 3: Arithmetic for Computers — 计算机中的算法

基本运算 —有符号数

有符号数最高位表示符号位, 1 表示负数, 0 表示正数。

有符号数在计算机中用二进制的补码表示 正数的补码是其本身 原码: 01111111111111111111111111111111 补码: 01111111111111111111111111111111

数值大小: 负数的补码为除符号位外所有的位取反,然后加 1 : 原码: 10000000000000000000000000000010 补码: 11111111111111111111111111111110

数值大小:

Page 4: Arithmetic for Computers — 计算机中的算法

基本运算 —加法、减法

减法可以通过加上减数的补码来表示:例如 7-6 可表示为

溢出( overflow ):

MIPS 通过异常( exception ),也叫做中断( interrupt )方式来检测溢出。

Page 5: Arithmetic for Computers — 计算机中的算法

基本运算 - 乘法

下式为只有 1,0 的十进制乘法运算

二进制运算与其类似:

Page 6: Arithmetic for Computers — 计算机中的算法

基本运算 - 乘法

乘法运算包含:一个 32 位乘数寄存器,一个64 位被乘数寄存器,一个 64 位积( product )寄存器(初始值为 0 )。运算流程图如右图

Page 7: Arithmetic for Computers — 计算机中的算法

改进的乘法运算电路结构:

初始时,乘数放在 product 寄存器低 32 位,高 32位为 0 。在计算中右移 product 寄存器即可。

基本运算 - 乘法

Page 8: Arithmetic for Computers — 计算机中的算法

快速乘法运算电路:这种结构每一位乘法运算不是必须要一个周期,还有利于用流水线的方式同时进行多个乘法的运算。

基本运算 - 乘法

Page 9: Arithmetic for Computers — 计算机中的算法

基本运算 ——除法

被除数( dividend )、除数( divisor )、商( quotient )、余数( remainder )之间的关系 :

下式为只有 1,0 的十进制乘法运算

Page 10: Arithmetic for Computers — 计算机中的算法

基本运算 ——除法

除法运算电路中包括:一个 32 位 quotient寄存器,一个 64 位 divisor 寄存器和一个64 位 remainder 寄存器。初始状态:除数放在 divisor 寄存器的高 32位,低 32 位为 0 ; remainder 寄存器存放被除数; quotient 寄存器初始化为 0 。

右图为除法运算流程图

Page 11: Arithmetic for Computers — 计算机中的算法

基本运算 ——除法举例:7 除以 2 (十进制),假设运算为 4 位数,即 0000 0111 除以0010 ,运算过程如下:

Page 12: Arithmetic for Computers — 计算机中的算法

基本运算 ——除法

改进的除法电路

初始状态, remainder 寄存器高 32 位存放被除数,低 32 位为 0 。首先右移 remainder 寄存器,使被除数与除数最高位对齐。运算时, remainder 左移,相当于被除数向左移位,商放在低 32 位。

Page 13: Arithmetic for Computers — 计算机中的算法

基本运算 ——除法

带符号除法运算:

余数的符号必须与被除数相同。例如

Page 14: Arithmetic for Computers — 计算机中的算法

基本运算 ——除法

乘法、除法相关 MIPS 指令

Hi , Lo 为两个专用寄存器

Page 15: Arithmetic for Computers — 计算机中的算法

目录基本运算 —— 符号数 —— 加、减、乘、除

浮点数运算 —— 浮点数表示 —— 加、减、乘、除

Page 16: Arithmetic for Computers — 计算机中的算法

浮点数运算

浮点数表示方法: 1.xxxxxxx=2yyyy

溢出( overflow ):指数太大下溢出( underflow ):指数为负数,且太小。

单精度( single precision ):

双精度( double precision ):

Page 17: Arithmetic for Computers — 计算机中的算法

浮点数运算

IEEE 754 浮点数标准:

bias :单精度为 127 ,双精度为 1023

Page 18: Arithmetic for Computers — 计算机中的算法

浮点数运算 举例:-0.75 用单精度表示

Page 19: Arithmetic for Computers — 计算机中的算法

浮点数运算 举例:-0.75 用双精度表示

Page 20: Arithmetic for Computers — 计算机中的算法

浮点数运算 —浮点数加法 举例:计算 0.5 加 -0.4375 (保持 4 位精度)0.5=1.000*2-1

, -0.4375=-1.110*2-

2

Step1.

Step2.

Step3.

Step4. round the sum

Page 21: Arithmetic for Computers — 计算机中的算法

浮点数运算 —浮点数乘法

举例:计算 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. 设置符号

Page 22: Arithmetic for Computers — 计算机中的算法

浮点数运算 ——近似计算

近似计算:IEEE754 标准要求采用额外 2 比特数据用于近似计算,分别称为guard , round 。

四种近似方法: round up ( toward +∞ ), round down ( toward -∞ ), truncate and round to nearest even.

Page 23: Arithmetic for Computers — 计算机中的算法

浮点数运算 —— 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)

Page 24: Arithmetic for Computers — 计算机中的算法

浮点数运算 —— IA-32

IA-32(Intel Architecture) 是 Intel 的一种处理器架构。它与 MIPS 不同的是它没有 Hi , Lo 两个寄存器,而是一个 64 位的寄存器。同时他扩展了 60种浮点数操作指令。

IA-32 浮点操作指令可分为 4 大类: