计算机组成原理学习笔记(四)

无符号数和有符号数

无符号数

寄存器的位数:反映无符号数的表示范围

有符号数

注:以下表示法中x为真值,n为整数位数

  • 原码表示法
  1. 整数
  1. 小数
  • 补码表示法
  1. 整数
  1. 小数
  • 反码表示法
  1. 整数
  1. 小数
  • 移码表示法
    用于判断有符号数大小及浮点数阶码大小(补码表示很难直接判断其真值大小)
  • 移码和补码的比较
    补码与移码只差一个符号位,即改变补码符号位即可得到移码(求移码的快捷方式)
	设 x = +1100100
		[x]= 2^7 + 1100100
		[x]= 0,1100100
	设 x =1100100
		[x]= 2^71100100
		[x]= 1,0011100

数的定点表示和浮点表示

定点表示

小数定点机 整数定点机
格式 Sf.S1S2 …Sn
数符.数值部分
SfS1S2 …Sn.
数符数值部分.
原码 -(1-2-n) ~ +(1-2-n) -(2n-1) ~ +(2n-1)
补码 -1 ~ +(1-2-n) -2n ~ +(2n-1)
反码 -(1-2-n) ~ +(1-2n) -(2n-1) ~ +(2n-1)

浮点表示

  • 公式
    N = S × rj
    S:尾数,j:阶码,r:尾数的基值
    当r = 2时,N = 11.0101 = 0.110101 × 210 = 0.00110101× 2100
  • 浮点数的表示形式
    jf j1 j2 … jm . SfS1S2 …Sn
    Sf:代表浮点数的符号
    n:其位数反映浮点数的精度
    m:其位数反映浮点数的表示范围
    jf和 m 共同表示小数点的实际位置

例一:设机器数字长为 24 位,欲表示±3万的十进制数,试问在保证数的最大精度的前提下,除阶符、数符各取1 位外,阶码、尾数各取几位?
:因为 214 = 16384,215 = 32768
可知阶码为15可表示±3万的十进制数,1510 = 11112
在保证最大精度前提下,m需要尽可能小
所以m = 4,n = 21-4-1-1 = 18

  • 浮点数的表示范围
范围
最小负数 -2a× (1-2-n),a = 2m-1
最大负数 -2a× 2-n,a = - (2m-1)
最小负数 2a× 2-n,a = - (2m-1)
最小负数 2a× (1-2-n),a = 2m-1
  • 浮点数的规格化形式
    r = 2 尾数最高位为 1
    r = 4 尾数最高 2 位不全为 0
    r = 8 尾数最高 3 位不全为 0
    基数不同,浮点数的规格化形式不同
  • 浮点数的规格化
    r = 2
    左规 尾数左移 1 位,阶码减 1
    右规 尾数右移 1 位,阶码加 1
    r = 4
    左规 尾数左移 2 位,阶码减 1
    右规 尾数右移 2 位,阶码加 1
    r = 8
    左规 尾数左移 3 位,阶码减 1
    右规 尾数右移 3 位,阶码加 1
    基数 r 越大,可表示的浮点数的范围越大
    基数 r 越大,浮点数的精度降低

例一
将+19/128写成二进制定点数、浮点数及在定点机和浮点机中的机器数形式,其中数值部分均取 10 位,数符取 1 位,浮点数阶码取 5 位(含1位阶符),尾数规格化。

	设 x = +19/128,
	二进制形式			x = 0.0110011
	定点表示				x = 0.0110011000
	浮点规格化形式		x = 0.1100110000 × 2^-10
	定点机中				[x]= [x]= [x]= 0.0010011000
	浮点机中				[x]= 1, 0010; 0.1001100000
						[x]= 1, 1110; 0.1001100000
						[x]= 1, 1101; 0.1001100000

例二
将 –58 表示成二进制定点数和浮点数,并写出它在定点机和浮点机中的三种机器数及阶码为移码、尾数为补码的形式(其他要求同上例)。

	设 x =58
	二进制形式			x =111010
	定点表示				x = -0000111010
	浮点规格化形式		x = 0.1110100000 × 2^110
	定点机				[x]= 1,0000111010
						[x]= 1,1111000110
						[x]= 1,1111000101
	浮点机				[x]= 0, 0110; 1. 1110100000
						[x]= 0, 0110; 1. 0001100000
						[x]= 0, 0110; 1. 0001011111
						[x]阶移、尾补 = 1, 0110; 1. 0001100000
  • 机器零
    当浮点数尾数为 0 时,不论其阶码为何值按机器零处理
    当浮点数阶码等于或小于它所表示的最小数时,不论尾数为何值,按机器零处理

定点运算

移位运算

  • 算术移位规则
    符号位不变,移动数值位
码制 添补代码
正数 原码、补码、反码 0
负数 原码
补码
反码
0
右移添 1,左移添 0
0
  • 加减法运算
    连同符号位一起相加,符号位产生的进位自然丢掉
  1. 加法
    整数:[A]补 + [B]补 = [A+B]补(mod 2n+1)
    小数:[A]补 + [B]补 = [A+B]补(mod 2)
  2. 减法
    A–B = A+(–B )
    整数:[A – B]补 = [A+(–B )]补 = [A]补 + [ – B]补 (mod 2n+1)
    小数:[A – B]补 = [A+(–B )]补 = [A]补 + [ – B]补 (mod 2)
  3. 溢出判断
    (1)一位符号位判溢出:
    参加操作的两个数(减法时即为被减数和“求补” 以后的减数)符号相同,其结果的符号与原操作数的符号不同,即为溢出
    (2)两位符号位判溢出:
    首先用2n+2模(小数用4),求补码
    如-97,-41,补码为11,0011111,11,1010111
    相加后结果双符号位相同则未溢出,若不同则溢出;双符号位最高位代表真正符号
  • 乘法运算
    采用加法和移位实现
    A • B = A • 0.1011
    = 0.1A + 0.00A + 0.001A +0.0001A
    = 0.1A + 0.00A + 0.001( A +0.1A)
    = 0.1A + 0.01[0 • A + 0. 1( A +0.1A)]
    = 0.1{A +0.1[ 0 • A+0.1(A + 0.1A)]}
    = 2-1{1•A +2-1[ 0 • A+2-1(1•A + 2-1(1•A+0))]}
发布了14 篇原创文章 · 获赞 0 · 访问量 314

猜你喜欢

转载自blog.csdn.net/wanglizhi3733/article/details/105150393