400 likes | 512 Views
上午好. questions. 什么叫主 机 什么叫总线,根据传送的信息不同的分类,根据位置分类,根据结构分类。特点。 CPU 的组成 累加器和程序计数器 PC 的作用 标志寄存器的作用 存储器的读写过程。 RISC 与 CISC 计算机工作过程. 第三讲 第 2 章 微机运算基础. 进位计数制 进位数制之间的转换 二进制编码 二进制的运算 数的定点和浮点表示 带符号数的表示法. 2.1 进位计数制. 按进位的方法进行计数 基数:表示该进位制所用的字符或数码的个数 十进制的基数为 10 二进制的基数为 2 八进制的基数为 8
E N D
questions • 什么叫主机 • 什么叫总线,根据传送的信息不同的分类,根据位置分类,根据结构分类。特点。 • CPU的组成 • 累加器和程序计数器PC的作用 • 标志寄存器的作用 • 存储器的读写过程。 • RISC与CISC • 计算机工作过程
第三讲 第2章 微机运算基础 • 进位计数制 • 进位数制之间的转换 • 二进制编码 • 二进制的运算 • 数的定点和浮点表示 • 带符号数的表示法
2.1 进位计数制 • 按进位的方法进行计数 • 基数:表示该进位制所用的字符或数码的个数 • 十进制的基数为10 • 二进制的基数为2 • 八进制的基数为8 • 十六进制的基数为16
十进制数的特点: • 基数为10,数码个数为10;0~9 • “逢十进一”,上一位(左)的权是下一位(右)的权的10倍 • 二进制数的特点: • 基数为2,数码个数为2;0,1 • “逢二进一”,上一位(左)的权是下一位(右)的权的2倍
八进制数的特点: • 基数为8,数码个数为8;0~7 • “逢八进一”,上一位(左)的权是下一位(右)的权的8倍 • 十六进制数的特点: • 基数为16,数码个数为16;0~9和A~F • “逢十六进一”,上一位(左)的权是下一位(右)的权的16倍
设某进制数的基数为b,则该进制数N的按位权的展开式为:设某进制数的基数为b,则该进制数N的按位权的展开式为: 其中: n为整数的总位数;m为小数的总位数;ki为第I位的数码;bi为第i位的权。
2.2 进位数制之间的转换 • 二进制数转换为十进制数 • 整数的转换 • 小数的转换 • 十进制数转换为二进制数 • 整数的转换 • 小数的转换
八进制数与二进制数之间的转换 • 整数的转换 • 小数的转换 • 八进制数与十进制数之间的转换
十六进制数与二进制数之间的转换 • 十六进制数与十进制数之间的转换
2.3 二进制编码(代码) • 编码目的就是为了表示数字、字母、符号等,以便使计算机能够识别 • 二进制编码的十进制(二-十进制或BCD码) • 8421BCD码 • 例如:0.765D=(0.0111 0110 0101)BCD • 特点:简单直观、容易记忆 • 缺点:编码效率低,硬件实现复杂,信息量浪费大 • 二进制与BCD码之间的转换不能直接实现,而必须先转换为十进制
字符与字母的编码(ASCII码) • American Standard Code for Information Interchange • 表示数字、字母(大小写)、标点符号和控制字符,如: • A的ASCII码为:1000001(41H); • a的ASCII码为:1100001(97) • CR的ASCII码为:0001101(13)
2.4 二进制的运算 • 自学
2.5 数的定点和浮点表示 • 是计算机硬件能够直接识别的两种数据表示 • 定点表示就是小数点在数中的位置是固定的 • 浮点表示就是小数点在数中的位置是浮动的
定点整数 纯小数 数符:1表示负数;0表示正数
纯小数表示 • 二进制数:-0.1010111的定点表示为: . 符号 尾数 • 二进制数:+0.1010111的定点表示为: . 符号 尾数
N位尾数的定点计算机所能表示的数N的范围为:N位尾数的定点计算机所能表示的数N的范围为:
浮点表示 • 对于N=2P×S,当阶码P可以变化时,称N为浮点数,一般用规格化表示 • 在计算机中的表示:
例如:二进制数:2+100×0.1011101的浮点表示为:例如:二进制数:2+100×0.1011101的浮点表示为: . 尾数值 阶符 阶码值 尾符
定点表示和浮点表示的比较 • 数的表示范围,浮点数比定点大 • 运算规则,浮点比定点运算复杂,两个浮点数做加减法时首先要对阶(即对齐小数点的位置);做乘除法时,两数的阶码和尾数要分别进行运算,见书中(P46 )的例子 • 运算精度,浮点比定点高 • 浮点运算所需的设备更复杂
2.6 带符号数的表示法 • 机器数与真值 • 机器数:一个数(包括符号位)在机器中的一组二进制表示形式 • 真值:把该数所表示的值称为机器数的“真值”。 • 机器数的种类和表示方法 • 带符号数的表示方法:原码、反码、补码
原码 • 原码表示即符号位0表示“+”号、1表示“-”号,其余数字位表示数据本身,如: X=+105;原码为:[X]原= 0 1101001 X=-105;原码为:[X]原= 1 1101001 0的原码表示有两个: [+0]原= 0 0000000 [-0]原= 1 0000000
反码 • 正数的反码表示:符号位用0表示;数字位为数值本身,如: [+4]反=0 0000100;[+127]反=0 1111111 [+0]反=0 0000000; • 负数的反码表示:符号位用1表示;数字位为数值本身取反,如: [-4]反=1 1111011;[-127]反=1 0000000 [-0]反=1 1111111
反码表示的特点 • 0的反码有两种表示法 • 8位二进制反码表示的范围为:-127D~127D • 当一个带符号数用反码表示时,最高位为符号位。如: • 10010100B是个负数-20D?-107?
补码 • 微机都是采用补码表示法,符号位可以一起参与运算,使得运算逻辑电路简化 • 什么是“模”? 循环计数系统中所能表示的最大数
什么是同余? • 数a与该数本身加上其模的任意整数倍之和相等,即:a+NK=a(mod K) • 这里:K为模,N为任意整数 • 当N=1时,a的同余数称为a的补数,即:
一般对于n位二进制数,某数X的补码总可以定义为:一般对于n位二进制数,某数X的补码总可以定义为: 从上式可见,正数的补码与原码相同,只有负数才有求补码的问题
求补码举例 • 正数的补码与其原码相同,如: [+4]补=0 0000100 [+127]补=0 1111111 [+0]补=0 0000000 • 负数的补码,反码加1,如: [-4]补=0 1111100 [-127]补=0 0000001 [-0]补=0 0000000
8位二进制补码的特点 • [+0]补= [-0]补=0 0000000 • 表示数的范围:-128~127 • 最高位是符号位 若[X]补= 1 0011011B则X=-27D?或 X=-101D?
补码的运算规则 • 微机中带符号数一律用补码表示,符号位同时参与计算,结果也为补码数表示 • 补码运算规则1:两个n位二进制之和的补码等于该两数的补码之和:[X]补+[Y]补=[X+Y]补 因为[X]补+[Y]补=2n+X+2n+Y=2n+(X+Y) 而2n+(X+Y)=[X+Y]补 所以[X]补+[Y]补=[X+Y]补
举例 • 举例1: • 已知X=+1000000,Y=+0001000,求两数的补码和。 • 先求两数的补码:[X]补=01000000, [Y]补=00001000 • 则[X]补+[Y]补=01001000 • [X+Y]补=[X]补+[Y]补=01001000 • 故[X+Y]原=[X+Y]补=01001000=+72
举例 • 举例2: • 已知X=+0000111,Y=-0010011,求两数的补码和。 • 先求两数的补码:[X]补=00000111, [Y]补=11101101 • 则[X]补+[Y]补=11110100 • [X+Y]补=[X]补+[Y]补= 11110100 • 故[X+Y]原= [[X+Y]补]补=10001100=-12
举例 • 举例3: • 已知X=-0011001,Y=-0000110,求两数的补码和。 • 先求两数的补码:[X]补=11100111, [Y]补=11111010 • 则[X]补+[Y]补=1 11100001, 1自然丢失 • 所以[X+Y]补=[X]补+[Y]补= 11100001 • 故[X+Y]原= [[X+Y]补]补=10011111=-31
补码运算规则2:两个n位二进制数之差的补码等于该两数的补码之差补码运算规则2:两个n位二进制数之差的补码等于该两数的补码之差 [X-Y]补=[X]补-[Y]补
补码运算规则3:求[X-Y]补 可以用[X]补和[-Y]补相加实现。 因为X-Y=X+(-Y) 所以[X-Y]补=[X+(-Y)]补=[X]补+[-Y]补
举例 • 例如1:X=33,Y=15,求X-Y [X]补=00100001B; [Y]补=00001111B,[-Y]补=11110001 则[ X-Y ]补= [X]补+[-Y]补= 1 00010010=00010010= [ +18 ]补= +18 • 例如2: X=33,Y=-15,求X-Y [X]补=00100001B; [Y]补= 11110001 B,[-Y]补=00001111 则[ X-Y ]补= [X]补+[-Y]补= 00110000=00010010= [ +48 ]补= +48
4 溢出及其判断方法 • 已知计算机的字长为n位,而n位二进制的最高位是符号位,其余n-1位是数值位,采用补码表示时,可表示的数X的范围是 • 当n=8时为-128~+127,当运算的结果超出表示的范围,发生溢出,计算结果出错;显然,溢出只发生在两个同号数相加或异号数相减的情况 • 判断方法:V=D7C D6C • V=1时,有溢出。 +
对于加运算,如果次高位形成进位加入最高位,而最高位相加却没有进位输出时;这种情况对应两正数相加运算溢出对于加运算,如果次高位形成进位加入最高位,而最高位相加却没有进位输出时;这种情况对应两正数相加运算溢出 • 若次高位没有进位加入最高位,但最高位却有进位输出时发生溢出;对应两负数相加,结果超出范围 • 对于减运算,当次高位不需从最高位借位,但最高位却需借位(正数减负数,差超出范围);或者次高位需从最高位借位,但最高位不需借位(负数减正数,差超出范围),都会溢出。
举例 • +72+(+98) 01001000B+01100010B=10101010B=-86 • -83+(-80) 10101101B+10110000B=[1] 0 1011101B=+93 • +72 - ( - 98) 01001000B - 10011110B=10101010B=-86 • -83+(-80) 10101101B+10110000B=01011101B=+93
谢谢 问题与讨论