前言:
最近在备战期末考试,所以本专栏主要是为了备战期末计算机组成原理这门考试,讲的比较浅显,但是都是期末常考的考点和题型,仅限于“期末不挂”的层面
一、本章考点总览
考点 | 考查频率 | 题型 |
进制转换 | ★★★★☆ | 计算题 |
无符号数与有符号数 | ★★★★★ | 填空题/选择题 |
数的定点表示与浮点表示 | ★★★★★ | 计算题/综合题 |
定点运算 | ★★★★☆ | 选择题/计算题 |
二、考点分析
1、日常我们采用十进制来表示数据,计算机如何表示?如何进行转换
考点:进制转换
考频:★★★★☆
难度:★★☆☆☆
解析:
进制也就是进位计数制,是人为定义的带进位的计数方法。
对于任何一种进制---X进制,就表示每一位上的数运算时都是逢X进一位。
数码:一组用来表示某种数制的符号,数中每一位的数字
基数:某数制可以使用的数码个数,十进制,基数为十
数位:数码在一个数中所处的位置,从右到左从0开始递增
权:权是基数的幂,表示数码在不同位置上的数值,十进制位数0,位权为 10^0 = 1
十进制转非十进制-整数
(215)10转二进制--------除基取余法
十进制转非十进制-小数
(0.6875)10转二进制--------乘基取整法
N进制转换为M进制?
2、计算机是用来计算的,那它和现实中的计算有何区别?
考点:无符号数与有符号数
考频:★★★★★
难度:★★★★☆
解析:
机器数和真值:
真值是指在数值前面用“+”号表示正数,用“-”号表示负数的带符号二进制数
机器数一个数在计算机中的二进制表示形式。
人和机器有什么区别?
人脑可以知道第一位是符号位,在计算的时候我们会根据符号位,选择对真值区域的加减。
对于计算机,加减乘除已经是最基础的运算,要设计的尽量简单,计算机辨别“符号位”显然会让计算机的基础电路设计变得十分复杂
如何设计的更简单呢?
将符号位参与运算,并且只保留加法的方法。
1-1 = 1 + (-1) = 0
引入三种机器存储一个具体数字的编码方式:原码、反码、补码
原码:
符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。
反码:
正数的反码是其本身;
负数的反码是在其原码的基础上,符号位不变,其余各个位取反。
补码:
正数的补码就是其本身;
负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1。(也即在反码的基础上+1)
[+1] = [0000 0001]原= [0000 0001]反= [0000 0001]补
[-1] = [1000 0001]原= [1111 1110]反= [1111 1111]补
3、计算机不好理解符号位,那有没有更好的存储与表示方法?
考点:无符号数与有符号数
考频:★★★★★
难度:★★★★☆
解析:
正15加上负15:15+(-15)=0
15的二进制为00001111(最高位为符号位),-15的二进制为10001111(最高位为符号位),两者相加等于10011110为-30,与理论结果不符。
换位思考,时钟10点处要移到7点处,有两种方式,顺时钟9小时,逆时针3小时
15的原码加-15的反码等于0000 1111+1111 0000=1111 1111为-127(符号位参与计算),只有在1111 1111基础上再加0000 0001才会变成1 0000 0000(去掉最高位,得0),所以可以将反码加1变成补码(符号位不变)
4、原码、反码、补码的作用是什么?
考点:无符号数与有符号数
考频:★★★★★
难度:★★★★☆
解析:
原码:
计算十进制的表达式: 1 - 1 = 0
1 - 1 = 1 + (-1) = [0000 0001]原+ [1000 0001]原= [1000 0010]原= -2
原码让符号位也参与计算,显然不正确。这也就是为何计算机内部不使用原码表示一个数。
为了解决原码做减法的问题, 出现了反码:
计算十进制的表达式:1 - 1 = 0
1 - 1 = 1 + (-1) = [0000 0001]原+ [1000 0001]原= [0000 0001]反+ [1111 1110]反= [1111 1111]反= [1000 0000]原= -0
用反码计算减法,结果的真值部分是正确的。而唯一的问题其实就出现在"0"这个特殊的数值上,虽然人们理解上+0和-0是一样的,但是0带符号是没有任何意义的,而且会有[0000 0000]原和[1000 0000]原两个编码表示0。
补码,解决0的符号问题以及0的两个编码问题:
1-1 = 1 + (-1) = [0000 0001]原+ [1000 0001]原= [0000 0001]补+ [1111 1111]补= [1 0000 0000]补=[0000 0000]补=[0000 0000]原
注意:进位1不在计算机字长里。
(-1) + (-127) = [1000 0001]原+ [1111 1111]原= [1111 1111]补+ [1000 0001]补= [1000 0000]补
要将正数转成对应的负数,其实只要用0减去这个数就可以了。
比如,-8其实就是0-8。已知8的二进制是00001000,-8就可以用下面的式子求出:
00000000
-00001000
---------
111110000
不够借,最高位借1
补码的两个转换步骤完成
5、计算机中怎么存储小数呢?
考点:数的定点表示与浮点表示
考频:★★★★★
难度:★★★★★
解析:
计算机不仅需要存储整数,还需要存储小数。由于计算机中并没有专门的部件对小数中的小数点进行存储和处理,所以需要一种规范,使用二进制数据表示小数。
定点数表示方式
浮点数表示方式
定点数:小数点的位置在计算机的存储是约定好的,固定的。一个小数的整数部分和小数部分分别转化为二进制的表示。
所以在一个8位的计算机中,前5位表示一个小数的整数部分,后3位表示小数部分,小数点默认是第五位后的位置(实际上计算机不会存储小数点,只是大家这么约定)
一个8位的计算机,整数部分111111十进制最大只能表示为31 ;小数部分0.111 最大只能表示0.875,表示的数据范围太小了。多数计算机并没有选择使用定点数表示小数,而是采用浮点数表示小数。
计算机中使用浮点数表示小数,类似于以前数学中用科学计数法表示较大的数。
例如:352.47 = 3.5247 * 10的2次方
178.125转化为二进制为 10110010.001,又可表示为:1.0110010001 乘以 2的111次方(111是7的二进制表示)
0110010001 这部分被称作尾数(M)
111这部分被称作阶码(P)
正负被称作数符(S): 0表示正数 , 1表示负数。
那么一个浮点数可以使用三部分表示:数符(S),阶码(P),尾数(M)
6、设机器字长为8位(含1位符号位),A=+26与A=-26的移位操作运算?
考点:定点运算
考频:★★★★☆
难度:★★★★☆
解析:
定点数运算包括移位、加、减、乘、除
移位:A=+26
移位:A=-26
7、设A=0.1011,B=-0.0101,求 A+B
考点:定点运算
考频:★★★★☆
难度:★★★★☆
解析:
加减乘除:
1、加法
A+B整数:【A】补+【B】补=【A+B】补(mod 2^(n+1))
A+B小数:【A】补+【B】补=【A+B】补(mod 2)
2、减法: A-B=A+(-B)
A-B整数:【A-B】补=【A+(-B)】补(mod 2^(n+1))
A-B小数:【A-B】补=【A+(-B)】补(mod 2)
补码运算:连同符号位一起相加,符号位产生的进位自然丢掉。
3、乘法:原码
三、真题速通
十进制数125对应的十六进制数是( )
A、7D B、82 C、7A D、7C
答:A
下列不同进制的数中,最大的是( )
A、(0.101)2 B、(0.62)10 C、(0.52)8 D、(0.75)16
答:C
9位原码(含1位符号位)能表示的数据个数是( )
A、10 B、9 C、511 D、512
答:C
在下列有关补码和移码关系的叙述中,( )是不正确的
A、相同位数的补码和移码表示具有相同的数据表示范围
B、零的补码和移码表示相同
C、同一个数的补码和移码表示,其数值部分相同,而符号相反
D、一般用移码表示浮点数的阶,而补码表示定点整数
答:B
真值1011010的原码、反码和补码分别是( )、( )、( )
答: 01011010 01011010 01011010
真值-0.1010的原码、反码和补码分别是( )、( )、( )
答: 1.1010 1.0101 1.0110
真值和机器数的关系是什么?
答:在计算机内部用二进制编码表示的数称为机器数,而机器数真正的值(即原来带有正负号的数)称为机器数的真值
设机器字长为8位(含1位符号位),求-35/64的原码、补码和反码
答:
(- 35/64)=(-100011/1000000)=(-0.1000110)
[x]原=1.1000110
[x]反=1.0111001
[x]补=1.0111010
十进制112.5表示为IEEE754单精度浮点数。
答:转为二进制:1110000.1
二进制采用类似科学计数法表示:1110000.1 = 1.1100001*26(二的六次方)
小数点后1100001为尾数,6为阶码
单精度浮点数:4字节、32位。阶码偏移量127(原来8位二进制数有符号二进制表示范围是-127~127,但是IEEE为了不在阶码中引入符号位,在有符号位的二进制基础上加127 )
设机器数字长为8位,(含1位符号位),A=15,B=24,用补码求A-B
答:
已知 [ X ]补 = 11011,求[ -X ]补。
答:
[X]补 = 11011;
[X]原 = 10101;
[-X]原 = 00101;
[-X]补 = 00101;
在定点运算中产生溢出的原因是( )。
A、运算过程中最高位产生了进位或借位
B、参加运算的操作数超出了机器的表示范围
C、运算结果超出了机器的表示范围
D、寄存器的尾数太少,不得不舍弃最低有效位
答:C