• 计算机组成原理之运算器


    运算器

    数据的表示方式

            在计算机中数据的表示形式是使用0或1字符串来表示,数据要存储在计算机中需要按特定的规则进行变化,其中存储在计算机中的数值按指定的01格式表示的数据被称为机器码。计算机中常使用的码制有原、反、补、移码。

    原码:真值加上符号位

    反码:原码除符号位其余各个位求反(为了更加简单的得到补码)

    补码:原码进行模运算之后是补码,但求补码的常用形式是反码某位加1

    移码:在本书中八位移码表示是在原码的基础上再加127得到的结果(得到的结果没有负值)


    各种码制的优缺点比较:

    原码->优点:与真值最接近,简单易懂;缺点:使用原码计算比较复杂。

    补码->优点:计算比较方便;缺点:补码不易得到。

    反码->优点:反码容易得到作为原码到补码的中间过渡;缺点:对直接运算没有帮助

    移码->优点:方便比较大小;缺点:对直接运算没有帮助


    定点数运算

    定点数的加、减法运算(主要使用【补码】来进行操作)

    补码加法公式:[x]+ [y] = [x+y]

           ->在计算的过程中,符号位也参数运算,计算的结果含有符号位(发生溢出,不做处理


    补码减法公式:[x]- [y][x]+ [-y]= [x-y]  (将减法变成加法进行运算)

           ->快速得到 :[-y]~[y]+1

    ([]包括符号位求反且最末位加1”,即可得到[])


     

    在计算中时常会出现计算结果溢出的情况,需要对溢出进行判断:

    溢出的判断方式:

    ->无符号数:判断最高位是否有进位

    ->有符号数:

    -》进位判别法:判断符号位和最高数据位的进位是否一致(同进表示无溢出

    -》双符号位法:将符号位扩展位为两位(00/11),计算之后看其结果(01:上溢;10:下溢;00/11:没有发生溢出

    定点乘法运算:

    1)原码并行乘法:

    运算规则:乘积的符号位由两数的符号位按异或运算得到,而乘积的数值部分则是两个正数相乘之积。


    2)间接的补码乘法运算:

    运算规则:先将需要运算的数值由补码转化为原码,

    再利用原码的并行乘法进行计算,

    最后要将结果转为补码的表示形式

    3)直接补码并行乘法:

    定点数除法运算:

    原码除法原理:商的符号位由两数的符号位按异或运算得到,而商的数值部分则是两个正数相除之商。

    浮点数运算

    浮点数加减法运算需要六个步骤:

    ->0操作数检查

           检查两个操作数,是否有一个操作数为0

    ->比较阶码大小并完成对阶

           使两操作数的阶码相同(小阶向大阶看齐)

    ->尾数求和运算

           尾数进行加减运算,(使用双符号位)

    ->结果规格化

           保证结果再0.5~1之间(尾数的符号位和最高数据位必须相异

           向左规格化:(00/11)  向右规格化:(01/10)注意阶码也应相应的移动

    ->舍入处理

           常见的有两种舍入方法:01入法、恒1

    ->判断结果是否溢出

           使用双符号位法进行溢出校验

    以浮点数加减法为例:







    运算器

    运算器的功能:

    ->算术运算

    ->逻辑运算

    ->直送功能



    附:文中图片截取自胡老师的授课PPT中

  • 相关阅读:
    OpenGL入门学习
    linux下安装sqlite3
    SQLite 之 C#版 System.Data.SQLite 使用
    .net程序运行流程
    一种简单,轻量,灵活的C#对象转Json对象的方案
    C# 获取Windows系统:Cpu使用率,内存使用率,Mac地址,磁盘使用率
    WPF中选择文件及文件夹
    要想创业成功,千万不能在这十个方面走弯路
    [译]Quartz.Net 框架 教程(中文版)2.2.x 之第三课 更多关于Jobs和JobDetails
    [译]Quartz 框架 教程(中文版)2.2.x 之第二课 Quartz API,Jobs和Triggers简介
  • 原文地址:https://www.cnblogs.com/z1r0s/p/14284179.html
Copyright © 2020-2023  润新知