计算机组成原理第二章例题解析(上)

本章首先讲述计算机中数据与文字的表示方法,然后讲述定点运算,定点运算器的组成,最后讲述浮点运算方法,浮点运算器的组成。

范围问题

纯小数范围 0 x 1 2 n 0\le|x|\le1-2^n
纯整数范围 0 x 2 n 1 0\le|x|\le2^n-1
在这里插入图片描述
定点整数的补码 2 n [ x ] 2 n 1 -2^n\le[x]_移\le2^n-1
在这里插入图片描述
定点小数的补码 1 [ x ] 1 2 n -1\le[x]_移\le1-2^{-n}
例如
当n为4时:
真值:-1111~+1111
补码:10001~01111(注意正数的补码不变)

\Rightarrow 10000~01111 \Rightarrow -16 ~15
原码的定点整数
[ x ] = { x , 2 n     x   2 n x = 2 n + x ,   x     2 n [x]_原=\begin{cases} x,& \text{$2^n$ $\geqslant$ $x$ $\geqslant$0 }\\ 2^n-x=2^n+|x|,& \text{0 $\geqslant$ $x$ $ \geqslant$ $-2^n$} \end{cases}
例如:
x = + 1001 x=+1001 ,则 [ x ] = 01001 [x]_原=01001
x = 1001 x=-1001 ,则 [ x ] = 11001 [x]_原=11001

补码的表示方法
这里有一个有趣的说法:
我们可以把补码视作一个无头无尾的圆,可以正向走,可以反向走。
3 = + 9 ( m o d ) 12 -3=+9 (mod)12
如何来理解这样的式子呢?
我们将其普遍化,令前一个数的绝对值为 x x ,第二个数的绝对值为 y y ,第三个数为 z z ;我们发现第一个数的绝对值与第二个数的绝对值之和为第三个数,即 x + y = z x+y=z ;列方程为: ( z a ) m o d ( z ) = [ z + ( z a ) ] m o d ( z ) (z-a)mod (z)=[z+(z-a)]mod(z)

正负补码与真值的关系
在这里插入图片描述
在这里插入图片描述
x = 0 × 2 8 + 1 × 2 7 + 0 × 2 6 + 0 × 2 5 + 1 × 2 4 + 1 × 2 3 + 0 × 2 2 + 1 × 2 1 + 1 × 2 0 x=0\times2^8+1\times2^7+0\times2^6+0\times2^5+1\times2^4+1\times2^3+0\times2^2+1\times2^1+1\times2^0
在这里插入图片描述
x = 1 × 2 8 + 1 × 2 7 + + 1 × 2 0 x=-1\times2^8+1\times2^7+\ldots+1\times2^0
补码表示法的创新点:

  1. 用加法代替减法
    [ a ] [ b ] = [ a ] + [ b ] [a]_补-[b]_补=[a]_补+[-b]_补

[ b ] [ b ] [b]_补 \rightarrow [-b]_补 \Rightarrow 连同符号位取反加一

  1. 0只有一种表示方法

移码的表示法
[ e ] = 2 k + e [e]_移=2^k+e
x = + 10101 x=+10101 时, [ x ] = 2 5 + x = 100000 + 10101 = 1 , 10101 [x]_移=2^5+x=100000+10101=1,10101
移码是补码符号位取反
在这里插入图片描述
在这里插入图片描述
最大正数

01111111111111111111111111111111 0 111 1111 1 111 1111 1111 1111 1111 1111
x = [ 1 + ( 1 2 23 ) ] × 2 255 128 x=[1+(1-2^{23})]\times2 ^{255-128}
最小正数:
00000000000000000000000000000000 0 000 0000 0 000 0000 0000 0000 0000 0000
x = 1 × 2 128 x=1\times2^{-128}
最小负数:
11111111111111111111111111111111 1 11111111 111 1111 1111 1111 1111 1111
x = [ 1 + ( 1 2 23 ) ] × 2 127 x=-[1+(1-2^{23})]\times2^{127}
最大负数:
10000000000000000000000000000000 1000 0000 0 000 0000 0000 0000 0000 0000
x = 1 × 2 128 x=-1\times2^{-128}
归纳范围问题
IEEEE754浮点数的表示范围

在这里插入图片描述
在这里插入图片描述

规格化问题

在IEEEE754标准中,一个规格化的32位浮点数 x x 的真值表示为:
x = ( 1 ) S × 2 E 127 × ( 1. M ) x=(-1)^S\times2^{E-127}\times(1.M)
e = E 127 e=E-127
在这里插入图片描述
将16进制展开:
0 S \begin{matrix} \underbrace{ 0} \\ S \end{matrix} 10000010 8 \begin{matrix} \underbrace{ 100 0001 0} \\ 阶码(8位) \end{matrix} 01101100000000000000000 23 \begin{matrix} \underbrace{ 011 0110 0000 0000 0000 0000} \\ 尾数(23位) \end{matrix}
阶码:
  e = E 127   = 3 \ e=E-127 \ =3
尾数:
1. M = 1.01101100000000000000000 = 1.011011 1.M=1.011 0110 0000 0000 0000 0000 =1.011011
x = ( 1 ) 0 × ( 1.011011 ) × 2 3 x=(-1)^0\times(1.011011)\times2 ^3
x = 1011.011 = ( 11.375 ) 10 x=1011.011=(11.375)_{10}
在这里插入图片描述
将10进制换成2进制,方法同上
在这里插入图片描述
这里的位数我所理解的是:因为一个十进制所要占用半个字节,也就是4位二进制,所以十进制的位数一定要占满完整的字节,也就是说十进制位数要为偶数。

上面的两个例题都是将二进制转化为IEEEE754格式的浮点数(在审题时要读清楚)

奇校验和偶校验

注意两点要求:

  1. 最后一位为校验位:偶校验:前面数为1的个数为偶数校验位为0,反之亦然;奇校验:前面数为1的个数为奇数校验位为0
  2. 包括校验位,当为1的数为奇数时,传输信息有误,反之亦然。

定点加法减法运算
补码加法
在这里插入图片描述
符号位要参与运算;在模 2 n + 1 2^{n+1} 意义下相加,即超过 2 n + 1 2^{n+1} 要丢掉

补码减法

上面已有提到,不再叙述。
在这里插入图片描述
[ x ] = 01101 [ y ] = 00110 [x]_补=01101 [y]_补=00110
[ y ] = 11010 [-y]_补=11010
x y = [ x y ] = [ x ] [ y ] = [ x ] + [ y ] = 01101 + 11010 = ( 1 ) 00111 x-y=[x-y]_补=[x]_补-[y]_补=[x]_补+[-y]_补=01101+11010=(1)00111
故: x y = + 0111 x-y=+0111

判断是否溢出
第一种:双符号位:
[ x ] = 2 n + 2 + x [x]_{变形补码}=2^{n+2}+x

  1. 正数直接在前面加两个0
  2. 负数用 2 n + 2 x 2^{n+2}-|x|
  3. 如果符号位位01则为正溢出,10则为负溢出
    第二种:
    在这里插入图片描述

定点乘法运算

在这里插入图片描述
在这里插入图片描述
x = 1111 , y = 1101 |x|=1111,|y|=1101
在这里插入图片描述
在这里插入图片描述
[ x ] = 10001 , [ y ] = 10011 [x]_补=10001,[y]_补=10011
尾数部分算前求补器输出为:
x = 1111 , y = 1101 |x|=1111,|y|=1101
说明:从右到左数到第一个1时,该位置左边全部取反,该位置右边包括该数全部不变
在这里插入图片描述
最后单独加上符号位

发布了6 篇原创文章 · 获赞 0 · 访问量 67

猜你喜欢

转载自blog.csdn.net/weixin_43984457/article/details/105155679