【计算机组成原理】数据的表示和运算

数制与码制

BCD码

  1. **8421码:**有权码,若两数之和大于9,需要加6修正;
  2. **余3码:**无权码,在8421码基础上加3;
  3. **2421码:**大于等于5的最高位为1;

定点数的编码表示

  1. 定点数:小数点位置固定;
  2. 机器数的定点表示:
    • 定点小数
    • 定点整数
原码
  1. 若字长为n+1,
    • 原码整数的表示范围:x≤|2n-1|;
    • 原码小数的表示范围:x≤|1-2-n|;
  2. ±0;
补码
  1. 负数补码转原码最右边的1及其右边是跟原码一致,左边与反码一致
  2. 0唯一;
  3. 加减均由加法实现,以节省硬件成本;
  4. 若字长为n+1,补码整数的表示范围:-2n ≤ x ≤ 2n-1;(比原码多-2n
  5. 符号位可以和数值位一起参加运算;
  6. 由[X]求[-X]是将[X]连同符号位一起取反,末位+1;
反码
  1. ±0;
移码
  1. 在补码的基础上将符号位取反
  2. n位的移码,偏置量为2n-1
  3. 0唯一;
  4. 通常用于表示阶码,用于表示整数,不能表示定点小数;
  5. 移码=真值+偏置量(n位移码的偏置量为2n-1)
无符号整数的表示
  1. n位的无符号数表示范围为0~2n-1;
  2. 通常用于表示主存地址;

运算方法和运算电路

定点数的移位运算

算术移位

  1. 实质:不管正/负数,移位后其符号位均不变,且移位后都相当于对真值补0;
  2. 对象:有符号数;移位过程中符号位不变;
  3. 正数:[X]=[X]=[X]=真值,空位补0;
  4. 负数
    • 原码:只要符号位不变,左移右移都补0;若舍弃位≠0,右移丢失精度,左移产生严重误差
    • ==补码:左移补0,右移添1;==左移的前提:原最高有效位=原符号位
    • 反码:左移右移都补1;
  5. 双符号位的移位操作只有低符号位需要参加移位操作;

逻辑移位

将操作数视为无符号数;

左移丢高位补0,右移丢低位补0;

循环移位

  1. 带进位标志位CF的循环移位(大循环):连同进位标志一起移位
  2. 不带进位标志位的循环移位(小循环)
  3. 适合将数据的低字节数据和高字节数据互换;

定点数的加减运算

补码的加减法运算

  1. 减法:被减数与减数的机器负数相加。
  2. 符号位与数值位一起参与运算,结果的符号位也在运算中直接得出;
  3. 最终运算结果的高位丢弃,保留n+1位,运算结果为补码;

补码加减运算电路

  1. Sub=1时,选择取反的线路;

  2. **ZF:**零标志位;

  3. **OF:**溢出标志;带符号位;OF=最高位产生的进位⊕次高位产生的进位

    溢出标志位OF可采用两种方法得到

    • 若两个加数的符号位相同,但与结果的符号位却相异,则溢出。
      O F = A ‾ 7 B ‾ 7 C 7 + A 7 B 7 C ‾ 7 OF=\overline{A}_7\overline{B}_7C_7+A_7B_7\overline{C}_7 OF=A7B7C7+A7B7C7

    • 若最高位上的进位和次高位上的进位不同,则溢出。
      O F = F o u t ⊕ 次高位产生的进位 OF=F_{out}⊕次高位产生的进位 OF=Fout次高位产生的进位

  4. **SF:**符号标志;**带符号位;**SF=最高位的本位和

  5. **CF:**进位/借位标志;无符号位;CF=最高位产生的进位⊕Sub

溢出判断方法

上溢:正+正=负;下溢:负+负=正

  1. 一位符号位(模2补码)

    0无溢出,1有溢出

  2. 双符号位(模4补码)

    00正数,无溢出;**01**正溢;10负溢;11负数,无溢出;

    在存储时,只需一个符号位;运算时会复制一个符号位;

原码的加减法运算(了解)

定点数的乘除运算

定点数的乘法运算

原码一位乘法
  1. 符号位与数值位分开求

    • 乘积符号:两数符号位异或
    • 数值部分:两数绝对值的乘积;
  2. 运算规则:自己多练练吧,不要放弃哦

    答题时最终结果最好写为原码机器数

无符号数乘法运算电路
补码一位乘法(Booth算法)
  1. 采用相加和相减操作计算补码数据的乘积。
  2. 每次加法可能+0、+[x]、+[-x]
  3. n位数值位:n次移位,n+1次加法运算
  4. n位补码一位乘时,乘积为2n+1

定点数的除法运算

符号扩展

在符号位与数值位之间添新位

  1. 定点整数:
    • 正数:添0;
    • 负数:原码添0,反补添1;
  2. 定点小数:
    • 正数:添0;
    • 负数:原补添0,反码添1;
原码除法运算(不恢复余数法)
  1. 也称原码加减交替除法;
  2. 商符和商值分开进行,减法用补码加法实现,商符由俩符号位“异或”形成;
  3. 仅当最后一步不够减时,才恢复一次余数;
补码除法运算(加减交替法)
  1. 符号位和数值位一起运算,商符自然形成;
  2. 异号相除时,够减商0,不够减商1;

C语言中的整数类型及类型转换

  1. **char:**8;**short:**16;**int、long、float:**32;

    **longlong、double:**64;

  2. C语言中定点整数用”补码“存储

有符号数和无符号数的转换
  1. (short int)——>(unsigned short)

  2. x为补码,y为无符号的二进制真值:

    x=-4321,y=61215;

    x=65535,y=-1;

不同字长整数之间的转换

大字节转小字节:高位截断,低位保留

数据的存储与排列

数据的”大端方式“和”小端方式“存储

"大端方式“存储:便于人阅读,最高位存在低地址

”小端方式“存储:便于机器阅读,最低位存在低地址

数据按”边界对齐“方式存储
  1. 每次访存只能读/写一个字;
  2. 空间换时间,提高取值令和取数的速度;

浮点数的表示和运算

  1. intfloat:可能损失精度;float转int:可能溢出及损失精度

浮点数的表示

浮点数的表示格式

N = ( − 1 ) s ∗ M ∗ R E N=(-1)^s *M*R^E N=1sMRE

**s:**0/1,用来决定浮点数的符号;

**M:**尾数,二进制定点小数,一般用定点原码小数表示;

**E:**阶码/指数,二进制定点整数,用移码表示;

**R:**基数,隐含,通常为2

浮点数的表示范围
浮点数的规格化

左规:

右规:

IEEE754
  1. 尾数用隐藏位的原码表示,阶码用移码表示;

  2. 浮点数的格式

    类型数符阶码尾数数值总位数偏置值(十六进制)偏置值(八进制)
    float1823327FH127
    double11152643FFH1023
    long double11564803FFFH16383
  3. 规格化的浮点数的真值:(-1)s * 1.M * 2E-127

    规格化的浮点数的真值:(-1)s * 1.M * 2E-1023

  4. IEEE754格式的浮点数,阶码全0全1

浮点数的加减运算
  1. 转化格式

  2. 对阶

  3. 尾数求和

  4. 规格化

  5. 舍入

    浮点数舍入的两种情况:①对阶 ②右规

  6. 溢出判断

寄存器

状态寄存器
  1. 运算器部件

  2. 状态寄存器用来存放两类信息:

    • 体现当前指令执行结果的各种状态信息(条件码)

      如有无进位(CF位)、有无溢出(OV位)、结果正负(SF位)、结果是否为零(ZF位)、奇偶标志位(P位)等;

    • 存放控制信息(PSW程序状态字寄存器),

      如允许中断(IF位)、跟踪标志(TF位)等。有些机器中将PSW称为标志寄存器FR(Flag Register)。

地址寄存器
  1. 存储器部件

  2. 用来保存当前CPU所访问的内存单元的地址。

    由于在内存和CPU之间存在着操作速度上的差别,所以必须使用地址寄存器来保持地址信息,直到内存的读/写操作完成为止 。

程序计数器PC
  1. 存放下一条要执行的指令的地址,决定CPU指令执行顺序;
  2. PC的值会根据CPU在执行指令的过程中修改,或自增,或转移到程序的某处;
  3. 转移指令时,需要判别转移是否成功,若成功则修改为转移指令的目标地址,否则仍为PC+“1”
  4. PC的位数=MAR的位数;
  5. 汇编程序员可见;
中断寄存器

位于计算机主机

通用寄存器

指令字长=机器字长

指令寄存器IR
  1. 指令字长要存系统中最长的指令
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值