计组 第二讲 2023.3.2+3.9

运算方法与运算器

按数制分

  • 十进制 :机器运算困难
  • 二进制 :硬件便于实现
  • 十六进制 :便于观察与转换
  • 8421BCD 二-十进制:转换简单

按数据格式分

  • 真值
  • 机器数

按数据的表示范围分

  • 定点数:小数点位置固定,数据表示范围小
  • 浮点数:小数点位置不固定,数据表示范围较大

按能否表示负数分

  • 无符号数:所有位均表示数值,直接用二进制数表示
  • 有符号数:有正负之分,最高位为符号位

定点数

小数点位置固定,数据表示范围小

使用不方便,精度较低

存储单元利用率低

纯小数(设采用n+1位数据)

X0.X1X2...XnX_0.X_{-1}X_{-2}...X_{-n}


有符号数

x=XS.X1X2...Xn,0x12nx=X_S.X_{-1}X_{-2}...X_{-n} , 0\le|x|\le1-2^n

XSX_S是符号位


无符号数

x=X0.X1X2...Xn,0x12n+1x=X_0.X_{-1}X_{-2}...X_{-n} , 0\le|x|\le1-2^{n+1}


数的机器码表示(有符号数)

原码

X=XnXn1Xn2...X1X0X=X_nX_{n-1}X_{n-2}...X_1X_0

XnX_n表示符号位

所以 结果=符号位+真值的绝对值

+0.110 = 0.110

-0.110 = 1.110

+110 = 0110

-110 = 1110


0有两种表示法,+0 = 0000 , -0 = 1000

数据表示范围:

  • 定点小数:-1<X<1
  • 定点整数:2n<X<2n-2^n<X<2^n,n是数位

补码

计算机中机器能表示的数据位数是固定的,运算都是有模运算,超过最大n位表示的高位会被舍弃掉

补码= 反码+1

正数的补码是其本身

计算时,先忽略符号,进行补码的运算,再根据符号与是否为小数或整数,选择前面加1或者加0或者不加

0的唯一表示法 -0的补码 = +0的补码

最小值TminT_{min}的补码就是他本身

数据表示范围:

  • 定点小数:-1<=X<1
  • 定点整数:2nX<2n-2^n\le X<2^n,n是数位

加减运算规则

  • X+Y】补=X+Y【X+Y】补=X补+Y补,减法同理

  • 补码的补码就是原码

Warning:

-1的补码是1.000000

由原码求补码

  • 除符号位以外,其他各位按位取反,末位再加1

  • 从最低位开始,遇到的第一个1以前的各位保持不变,之后各位取反

    10001100100 原

    11110011100 补

求相反数的补码

连符号位一起各位求反,末位加1

1.1010101

0.0101011

反码

各位取码


移码

用于表示浮点数的阶码

  • 用定点整数形式的移码,把真值平移2n2^n个单位

X=2n+xX_移 = 2^n+x2nx<2n-2^n\le x<2^n

或者直接把符号位取反




浮点数

小数点位置可变,形如科学计数法中的数据表示

N=Re×MN=R^e\times M

M:尾数 是一个纯小数(整数部分为0),表示数据的有效数位,决定精度

R:基数,可以取进制代表的数,表示当前的进制(2,8,10,16)

e:阶码,是一个整数,用于决定小数点在该数的位置,决定大小


1位阶符+m位阶码+1位数符+n位尾数

  • 注意,阶符使用移码表示,而数符使用补码表示

  • 阶符移码表示的范围是[2m,+(2m1)][-2^m,+(2^m-1)],数符补码表示的范围是[1,+(12n)][-1,+(1-2^{-n})]

  • 规格化要求浮点数为1.0或0.1的形式