1、数据的表示
1.1 进制的转换
R进制转10进制使用按权展开法:具体操作方式为∶将R进制数的每一位数值用Rk形式表示,即幂的底数是R,指数为k,k与该位和小数点之间的距离有关。当该位位于小数点左边,k值是该位和小数点之间数码的个数,而当该位位于小数点右边,k值是负值,其绝对值是该位和小数点之间数码的个数加1。
十进制转R进制使用短除法
二进制转八进制与十六进制
①二进制转八进制:每三个二进制位对应一个八进制位,对于二进制数10001110,从低位开始三位三位的看,二进制的110对应八进制的6;二进制的001对应八进制的1;而此时只剩下两位10,那么在最前面补0(补满3位即可),也就是010,对应八进制的2,所以该二进制数10 001 110就对应八进制数216。
②二进制转十六进制:每四个二进制位对应一个十六进制位,对于二进制数10001110,从低位开始四位四位的看,二进制的1110对应十六进制的E(14);二进制的1000对应十六进制的8;如果不满四位,与转八进制一样,在最前面补0(补满4位即可)。在十六进制中,A=10,B=11,C=12,D=13,E=14,F=15。
1.2 原码补码移码IEE754浮点数计算
真值与机器数
真值:符合人类习惯的数字 譬如十进制
机器数:数字实际存到机器里的形式,正负号需要被“数字化”
题目:计算机内的整数常用补码表示,假定在一个程序中定义了变量X,Short X;X的机器数是FFF1H,则变量X真值分别是多少?
X (补码)=1111 1111 1111 0001
X (原码)=1000 0000 0000 1111
X( 真值)=-1111B=-15D
原反补码相互转换
结合C语言中的不同变量+之间的赋值,掌握变量的真值及其机器数值的表示
IEEE754标准单精度实型数的真值与机器数的表示,加减运算
浮点数表示
浮点数的标准IEEE754
32/64位浮点数(Float/Double)
构成:阶码E,尾数M,符号位S
N = (-1)的S次方× M × 2的E-n次方
浮点数转换实例:
假定在一个程序中定义了变量X,Y,其中X是short型(补码表示),Y是float型(用IEEE754单精度标准表示),X的机器数是FFF1H,Y的机器数是4580 1000H,则变量X、Y的真值分别是多少?
定点数运算与浮点数运算
[A]补 + [B]补= [A+B]补
[A – B]补= [A+(–B )]补= [A]补 + [ – B]补
练习 1:设机器数字长为 8 位(含 1 位符号位),且 A = – 97,B = +41,用补码求 A – B
溢出
溢出的原因:运算结果超出数据表示范围
溢出的判断方法Ⅰ:进位
溢出的判断Ⅱ:变形补码(双符号位)
表示范围:
原码的表示范围
原码整数:若机器字长为n+1 ,原码整数的表示范围:-(2的n次方-1)到(2的n次方-1)。
真值0有正0与负0
原码小数:若机器字长为n+1 ,原码小数的表示范围:-(1-2的-n次方)到(1-2的-n次方-1)。
补码
正数:[X]补=[X]原
负数:符号除外,各位取反,末位加1
[X]原=11001001 [X]补=10110111
设机器数字长为 8 位(其中一位为符号位)
8位原码整数的表示范围? -127----+127
8位补码整数的表示范围? -128----+127
n位补码整数的表示范围 1000…0-------011…1 —> -2n-1------2n-1-1
n位无符号整数的表示范围 0-------11111111 —> 0-----2n-1
浮点数的取值范围
运算结果的状态标志
数的加减运算除了有结果外,还要考虑一些状态,比如 If (a > b),两个数的大小比较是如何完成的
例:比较无符号数13 与 5
运算的常见标志位
2、计算机结构
CPU
运算器
算术逻辑单元ALU
累加寄存器AC
数据缓冲寄存器DR
状态条件寄存器PSW
控制器
程序计数器PC
指令寄存器IR
指令移码器
时序部件
主存储器
计算机的主机中包含两大部件:CPU和内存(主存储器)。而对于声卡、显卡、鼠标键盘这些都是属于外设。
对于CPU,我们需要了解的就是运算器和控制器,以及这两者中的一些寄存器。
①算术逻辑单元 ALU:它是运算器的重要组成部件,负责处理数据,实现对数据的算术运算和逻辑运算。
②累加寄存器 AC:通常简称累加器,它是一个通用寄存器,功能是当运算器的算术逻辑单元执行算术或逻辑运算时,为ALU提供一个工作区。
③数据缓冲寄存器 DR:作为CPU和内存、外设之间数据传送的中转站,作为CPU和内存、外设之间在操作速度上的缓冲。
④状态条件寄存器 PSW:保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容。
⑤程序计数器 PC:用于存放下一条指令的地址。当一条指令被获取后,程序计数器的地址加1,指向下一条指令的地址。
⑥指令寄存器 IR:用于存放当前从主存储器读出的正在执行的一条指令。
⑦地址寄存器 AR:用于保存当前CPU所访问的内存单元的地址。
⑧指令译码器 ID:计算机执行一条指令时,首先分析这条指令的操作码是什么,以决定操作的性质和方法,然后才能控制计算机其他各部件协同完成指令表达的功能,这个分析工作由指令译码器来完成。
3、Flynn分类法
Flynn分类法(计算机体系结构分类)中主要有两个指标:一个是指令流,一个是数据流。指令流为机器执行的指令序列;数据流是由指令调用的数据序列。无论是指令流还是数据流,它们都分为两种类型:单、多。
4、CISC与RISC
5、流水线
5.1 基本概念
5.2 流水线计算
流水线周期是指在(取指、分析、执行)三个阶段中时间最长的一段,对应上面的例题,最长的一段时间为2ns,所以流水线周期为2ns。
100条指令全部执行完毕需要的时间为:理论公式:(2+2+1)+(100-1)*2=203ns。
100条指令全部执行完毕需要的时间为:实践公式:(3+100-1)*2=204ns。(公式中的k表示指令被分成了几段)
5.3 流水线吞吐率计算
指令条数为100,流水线执行时间为203ns,所以流水线的吞吐率TP=100/203,流水线最大吞吐率是一种理想情况,即TPmax=1/2。(Δt=流水线周期=2ns)。
5.4 流水线加速比
5.5 流水线的效率