计算机组成原理重要知识点摘录(考研用)——第二章:数据的表示和运算
本文参考于《2021年计算机组成原理考研复习指导》(王道考研),《计算机组成原理》
- (2)十进制数转换为任意进制数
采用基数乘除法,这种转换方法对十进制数的整数部分和小数部分分别进行处理,对整数部分用除基取余法,对小数部分用乘基取整法,最后将整数部分与小数部分的转换结果拼接起来。
除基取余法(整数部分的转换):整数部分除基取余,最先取得的余数为数的最低位,最后取得的余数为数的最高位(除基取余,先余为低,后余为高,因为后余乘以基数的幂次更高),商为0时结束
例:将(123.6875)10转换为二进制
整数部分:
(123)10=(1111011)2
乘基取整法(小数部分的转换):小数部分乘基取整,最先取得的整数为数的最高位,最后取得的整数为数的最低位(乘积取整,先整为高,后整为低,因为后整要除以更多基数的幂次) ,乘积为1.0或满足精度要求时结束
小数部分:
(0.6875)10=(0.1011)2
所以,(123.6875)10=(1111011.1011)2
在计算机中,小数和整数不一样,整数可以连续表示,但小数是离散的(二进制表示小数时只能用1/(2n)的和的任意组合表示),所以并不是每一个十进制小数都可以准确地用二进制表示。但任意一个二进制小数都可用十进制小数表示。
真值0的原码表示有正0和负0两种形式。[+0]原=0 0000和[-0]原=1 0000
对于纯小数的补码,若字长为n+1,补码的表示范围为-1~1-2-n(比原码多表示-1)
对于纯整数的补码,若字长为n+1,补码的表示范围为-2n~2n-1(比原码多表示-2n)
真值0的补码表示是唯一的。即[+0]补=[-0]补=0.0000,由定义得[-1]补=10.0000-1.0000=1.0000,对于小数,补码比原码多表示一个-1(这是因为补码中的0只有1种表示形式,故它能比原码多表示一个-1)。对于整数,[-8]补=10000-1000=1000,补码比原码多表示一个-2n(因为补码没有负0,故诸如10000000这样的数表示的是8位补码的最小数-128)
- 补码的算术移位
将[x]补的符号位与数值位一起右移一位并保持原符号位数值不变,可实现除法功能(除以2)。
模4补码双符号位00表示正,11表示负,用在完成算术运算的ALU部件中
(4)移码表示法
能直接从移码形式判断其真值的大小,又因为检验移码的特殊值较容易,因此移码常用来表示浮点数的阶码。它只能表示整数。
移码就是在真值X上加上一个常数(偏置值),通常这个常数取2^n,相当于X在数轴上向正方向偏移了若干单位。
-
一个真值的移码和补码仅差一个符号位,[x]补的符号位取反即得[x]移(1正0负,与其他机器数符号位取值正好相反),反之亦然
-
移码全0时,对应真值的最小值-2^n;移码全1时,对应真值的最大值
2 ^ n-1 -
移码保持了数据原有的大小顺序,移码大真值就大,移码小真值就小
二进制表示的机器数在相对于小数点作n位左移或右移时,其实质就是该数乘以或除以2^n
移位运算根据操作对象的不同分为算术移位和逻辑移位。有符号数的移位称为算术移位,逻辑移位的操作对象是逻辑代码,可视为无符号数
-
(1)算术移位
算术移位的对象是有符号数,在移位过程中符号位保持不变
对于正数,由于[x]原=[x]补=[x]反=真值,因此移位后出现的空位均用0填充。对于负数,由于原码、补码、反码的表示形式不同,因此当机器数移位时,对其空位的填补规则也不同。(不论是正数还是负数,移位后其符号位均不变,且移位后都相当于对真值补0,根据补码、反码的特性,在负数时填充代码有区别)
对于原码,左移一位若不产生溢出,相当于乘以2,右移一位,若不考虑因移出而舍去的末位尾数,相当于除以2。
不同机器数算术移位后的空位填补规则为:
负数的原码数值部分与真值相同,在移位时只要使符号位不变,其空位均填0;负数的反码各位除符号位外与负数的原码正好相反,因此移位后所填的代码应与原码相反,即全部填1。
在由原码得补码的过程中(由高位到低位找到最后一个1后,后面的照抄),当对其由低位向高位找到第一个1时,在此1左边的各位均与对应的反码相同,在此1右边的各位(包括1在内)均与对应的原码相同。因此负数的补码左移时,因空位出现在低位,填补的代码与原码相同,即填0;右移时空位出现在高位,填补的代码与反码相同,即填1。 -
(2)逻辑移位
逻辑移位将操作数视为无符号数,逻辑左移时,高位移丢,低位填0,右移时,低位移丢,高位填0;逻辑移位不管是左移还是右移,都填0; -
(3)循环移位
循环移位分为带进位标志位CF的循环移位(大循环)和不带进位标志位的循环移位(小循环)