计算机组成原理保姆级复习资料

文章目录

一、计算机系统概论

看书看书,都是文字,(想拿高分)多了解

二、数据的表示和运算

各种进制及其转换

进制 举例
二进制: 0,1 二进制: 101.1 —> 1 × 2! + 0 × 2" + 1 × 2# + 1 × 2%" = 5.5
八进制: 0,1,2,3,4,5,6,7 八进制: 5.4 —> 5 × 8# + 4 × 8%" = 5.5
十进制: 0,1,2,3,4,5,6,7,8,9 十进制: 5.5 —> 5 × 10# + 5 × 10%" = 5.5
十六进制: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F 十六进制: 5.8 —> 5 × 16# + 8 × 16%" = 5.5

各种进制的常见书写方式

在这里插入图片描述

二进制优越性

①可使用两个稳定状态的物理器件表示
②0,1 正好对应逻辑值 假、真。方便实现逻辑运算
③可很方便地使用逻辑门电路实现算术运算

任意进制→十进制

采用r 进制计数法每个位数的基数×该进制的位权次幂依次相加就可以啦

r 进制计数法

在这里插入图片描述
基数:每个数码位所用到的不同符号的个数,r 进制的基数为 r

举例

进制 计算举例
二进制:1 0 0 1 0 0 1 0 . 1 1 0 1 * 2^7 + 1 * 2^4 + 1 * 2^1 + 1 * 2^-1 + 1 * 2^-2 = 146.75
八进制:251.5 2 * 8^2 + 5 * 8^1 + 1 * 8^0 + 5 * 8^-1 = 168.625
十六进制:AE86.1 10 * 16^3 + 14 * 16^2 + 8 * 16^1 + 6 * 16^0 + 1 * 16^-1 = 44678.0625

大家也可以记住常见的二进制各个位的十进制值(右击保存图片收藏)
在这里插入图片描述

二进制↔八进制、十六进制

二进制 —> 八进制

3位一组,毎组转换成对应的八进制符号
在这里插入图片描述

八进制—> 二进制

每位八进制对应的3位二进制
在这里插入图片描述

二进制 —> 十六进制

4位一组,毎组转换成对应的十六进制符号
在这里插入图片描述

二进制 —> 十六进制

4位一组,毎组转换成对应的十六进制符号

在这里插入图片描述

十进制→任意进制

除 x 取余倒排法(x 代表进制数)

完整内容可以参考这个回答:https://zhidao.baidu.com/question/374587905766222524.html
在这里插入图片描述
如:75.3 小数部分=0.3
在这里插入图片描述
那么我们转化成二进制就是这样

  • 整数部分
    在这里插入图片描述- 小数部分
    在这里插入图片描述

十进制→二进制(拼凑法)

用这个图直接凑
在这里插入图片描述

真值和机器数

  • 真值:符合人类习惯的数字
  • 机器数:数字实际存到机器里的形式,正负号需要被“数字化”

例如下面两个数
在这里插入图片描述

定点数与浮点数的举例

举例
定点数:小数点的位置固定 Eg:996.007 ——常规计数
浮点数:小数点的位置不固定 Eg:9.96007*102 ——科学计数法

无符号数

概念

无符号数:整个机器字长的全部二进制位均为数值位,没有符号位,相当于数的绝对值。

例如:
在这里插入图片描述

表示范围

8位二进制数有 2^8 种不同的状态
在这里插入图片描述
n位的无符号数表示范围为:0 ~ 2^n -1

有符号数

有符号数的表示

例如
在这里插入图片描述
但是这样小数点的位置会不固定,我们在面对所有数据都不固定小数位的时候我们的心情会是这样

在这里插入图片描述
所以就有了有符号数的定点表示的规定

有符号数的定点表示

定点整数

在这里插入图片描述

定点小数

在这里插入图片描述

注意:

  • 可用 原码、反码、补码 三种方式来表示定点整数和定点小数。

  • 还可用 移码 表示定点整数。

  • 若真值为 x,则用 [x]原、[x]反、[x]补、[x]移 分别表示真值所对应的原码、反码、补码、移码

原码、反码、补码、移码

原码

在这里插入图片描述

反码

  • 若符号位为0,则反码与原码相同

  • 若符号位为1,则数值位全部取反

补码

  • 正数的补码 = 原码
  • 负数的补码 = 反码末位+1(要考虑进位)
  • 将负数补码转回原码的方法相同:尾数取反,末位+1

移码

  • 移码: 补码的基础上将符号位取反。

注意:移码只能用于表示整数

用几种码表示定点整数

在这里插入图片描述

各种码的真值0

[+0] [-0]
原码 [+0]原=00000000 [-0]原=10000000
反码 [+0]反=00000000 [-0]反=11111111
补码 [+0]补= [-0]补= 00000000 [+0]补= [-0]补= 00000000
反码 [+0]移= [-0]移= 10000000 [+0]移= [-0]移= 10000000

各种码转换图

在这里插入图片描述

各种码表示范围

在这里插入图片描述

算数移位运算

移位:通过改变各个数码位和小数点的相对位置,从而改变各数码位的位权。可用移位运算实现乘法、除法

原码的算数移位

例如原码为 10101000 进行算数移位
在这里插入图片描述
原码的算数移位——符号位保持不变,仅对数值位进行移位。

  • 右移:高位补0,低位舍弃。若舍弃的位=0,则相当于÷2;若舍弃的位≠0,则会丢失精度
  • 左移:低位补0,高位舍弃。若舍弃的位=0,则相当于×2;若舍弃的位≠0,则会出现严重误差

反码的算数移位

反码的算数移位——正数的反码与原码相同,因此对正数反码的移位运算也和原码相同。

  • 右移:高位补0,低位舍弃。
  • 左移:低位补0,高位舍弃

反码的算数移位——负数的反码数值位与原码相反,因此负数反码的移位运算规则如下,

  • 右移:高位补1,低位舍弃。
  • 左移:低位补1,高位舍弃。

补码的算数移位

补码的算数移位——正数的补码与原码相同,因此对正数补码的移位运算也和原码相同。

  • 右移:高位补0,低位舍弃。
  • 左移:低位补0,高位舍弃。

补码的算数移位——负数补码=反码末位+1 导致反码最右边几个连续的1都因进位而变为0,直到进位碰到第一个0为止。

规律——负数补码中,最右边的1及其右边同原码。最右边的1的左边同反码
负数补码的算数移位规则如下:

  • 右移(同反码):高位补1,低位舍弃。
  • 左移(同原码):低位补0,高位舍弃。

逻辑移位

在这里插入图片描述

  • 逻辑右移:高位补0,低位舍弃。
  • 逻辑左移:低位补0,高位舍弃。

可以把逻辑移位看作是对“无符号数”的算数移位

逻辑移位的应用举例

例如颜色RGB分别存储的数据为:
R = 102 01100110
G = 139 10001011
B = 139 10001011

需要将三个灰度值合成一个才能成彩色图像
在这里插入图片描述

循环移位

在这里插入图片描述

原码的加减运算

原码的加法运算:

  1. 正+正 → 绝对值做加法,结果为正 (可能会溢出)
  2. 负+负 → 绝对值做加法,结果为负 (可能会溢出)
  3. 正+负 → 绝对值大的减绝对值小的,符号同绝对值大的数
  4. 负+正 → 绝对值大的减绝对值小的,符号同绝对值大的数

原码的减法运算,“减数”符号取反,转变为加法:

  • 正-负 → 正+正
  • 负-正 → 负+负
  • 正-正 → 正+负
  • 负+正 → 负-负

补码的加减运算

对于补码来说,无论加法还是减法,最后都会转变成加法,由加法器实现运算,符号位也参与运算。

补充:

1. 求[-B]补

[-B]补 : [B]补连同符号位一起取反加1

2. 负数补 → 原:

①数值位取反+1;
②负数补码中,最右边的1及其右边同原码。最右边的1的左边同反码

例题

我们先看一道例题:设机器字长为8位(含1位符号位),A = 15,B = -24,求[A+B]补和[A−B]补

先将A B的原码补码都求出来
在这里插入图片描述

[A+B]补 = [A]补 + [B]补 = 0,0001111 + 1,1101000 = 1,1110111
原码:1,0001001 真值-9

[A-B]补 = [A]补 + [-B]补 = 0,0001111 + 0,0011000 = 0,0100111
真值+39

我们将题改一下:
其中 C = 124,求[A+C]补和[B−C]补,按照上面方法求出可得:
[A+C]补 = 0,0001111 + 0,1111100 = 1,0001011 真值-117 溢出(实际应该是139,但是溢出后是 -117)
[B−C]补 = 1,1101000 + 1,0000100 =0,1101100 真值+108

溢出判断

溢出条件

  • 只有“正数+正数 ”才会上溢 —— 正+正=负
  • 只有“负数+负数 ”才会下溢 —— 负+负=正

溢出判断:采用双符号位

正数符号为00,负数符号为11
[A+C]补 = 00,0001111 + 00,1111100 = 01,0001011 上溢
[B−C]补 = 11,1101000 + 11,0000100 = 10,1101100 下溢

记两个符号位为S1 S2 ,则V=S1异或S2

  • 若V=0,表示无溢出;
  • 若V=1,表示有溢出。

乘法运算的思想

手算乘法(二进制)

例如: 算 0.1101×0.1011

列竖式

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我心向阳iu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值