无符号数和有符号数
无符号数
- 寄存器的位数:反映无符号数的范围
- 0 ~
有符号数
机器数和真值
- 符号"数字化"的数,称为机器数
- 带"+","-"符号的数,称为真值
原码表示法
- 符号位0表示正数,符号位1表示负数
- 数值位即真值的绝对值
- 整数的符号与数值之间用**逗号","**隔开
- 小数的符号位与数值之间用**小数点"."**隔开
- ,原码的0有两种形式
补码表示法
- 补的概念:一个负数加上 “模” 即得该负数的补数
- 求补码:
- 正数:不变
- 负数:原码(除符号位)求反 + 1 (反码+1)
- ,因为补码0只有一种,所以可以多表示一位数字
- ,补码的0只有一种
反码表示法
- 补码和原码之间互相转换的中间过渡
- 求反码:
- 正数:不变
- 负数:原码(除符号位)求反
- ,反码的0有两种形式
三种机器数小结
- 最高位均为符号位。符号位和数值部分用逗号",“或小数点”."(书写时,实际不存在)
- 正值三码合一,即符号位"0",数值部分为真值
- 负值三种方式均不同,但符号位均"1"
- 补码是原码的"求反加1"
- 反码是原码的"每位求反"
- 不论正负,是:连同符号位在内,每位求反,末位加1
移码表示法
- 移码:在真值上加上一个常数 ,与 补码仅差一个符号位 ,将补码的符号位取反即得到移码
- ,移码的0只有一种
定点表示和浮点表示
定点表示
- 小数点固定在某一位置的数为定点数
- 数值部分决定了定点机中数的表示范围
浮点表示
-
- S 尾数:小数,可正可负
- j 阶码:整数,可正可负
- r 基数:固定,与计算机有关,取2,4,8,16 ……
-
- 上溢中断,下溢为机器0
-
浮点数的规格化形式(原码)
- r = 2 :尾数最高位为 1
- r = 4 :尾数最高2位不全为0
- r = 8 :尾数最高3位不全为0
- 基数不同,浮点数的规格化形式不同
-
浮点数的规格化
- r = 2
- 左规:尾数左移 1 位,阶码减 1
- 右规:尾数右移 1 位,阶码加 1
- 基数 r 越大,可表示的浮点数的范围越大
- 基数 r 越大,浮点数的精度降低
- 规格化后范围变小
- r = 2
-
机器零:
- 当浮点数 尾数为 0 时,不论其阶码为何值按机器零处理
- 当浮点数 阶码等于或小于它所表示的最小数 时,不论尾数为何值,按机器零处理
-
IEEE 754标准:尾数为规格化表示,非 “0” 的有效位最高位为 “1”(隐含)
定点运算
移位运算
- 移位的意义:和加减配合,实现乘除
- 数值相对于小数点移动,而不是小数点移动
- 算术移位规则
- 正数:补0
- 负数:
- 原码:补0
- 补码:左移补0,右移补1
- 反码:补1
- 算术移位和逻辑移位
- 算术移位:无符号数
- 逻辑移位:有符号数
加减法
- 加法:A+B
- 整数:
- 小数:
- 减法:A-B
- 转化为,就变成了加法
- 连同符号位一起相加,符号位产生的进位自然丢掉
- 溢出判断
- 一位符号位判溢出
- 两个数符号相同,结果变号即溢出
- 两位符号位判溢出
- 双符号位相同,未溢出;不同则溢出
- 最高符号位代表其真正的符号
- 一位符号位判溢出
乘法运算
- 分析笔算乘法
- 符号位单独处理
- 乘数的某一个决定是否加被乘数
- 乘积位数扩大一倍
- 笔算乘法改进
- 乘法运算可用加和移位实现
- 由乘数的末位决定被乘数是否与原部分积相加,然后:➡1位形成新的部分积,同时:乘数➡1位(末位移丢),空出的高位存放部分积的地位
- 被乘数只与部分积的高位相加
- 3个寄存器,其中2个具有移位功能;1个全加器
原码乘法
原码一位乘
- 乘积的符号位单独处理
- 数值部分为绝对值相乘
- 用 逻辑移位 的次数 (乘数位数) 判断乘法是否结束
原码两位乘
-
原码乘:符号位和数值位部分分开运算
-
两位乘:每次用 乘数的 2 位判断 原部分积,是否加和如何加被乘数
乘数 新的部分积 00 加"0",➡2位 01 加1倍的被乘数,➡2位 10 加2倍的被乘数,➡2位 11 加3倍的被乘数,➡2位 - 如何加3倍的被乘数:先减一倍,再加四倍
-
绝对值的补码运算,采用补码右移:因为要用到减法,所以采用补码运算
-
用 算术移位 的次数判断乘法是否结束
比较
异同处 | 原码一位乘 | 原码两位乘 |
---|---|---|
符号位 | ||
操作数 | 绝对值 | 绝对值的补码 |
移位 | 逻辑右移 | 算术右移 |
移位次数 | (n为偶数) | |
最多加法次数 | (n为偶数) |
- n为奇数:最高位补0,就变成了偶数个
补码乘法
- 补码一位乘
- Booth算法(被乘数、乘数符号任意)
小结
- 整数乘法与小数乘法完全相同
- 原码乘:符号位单独处理
- 补码乘:符号位自然形成
- 原码乘去掉符号位运算,即为无符号数乘法
浮点四则运算
浮点加减运算
- 对阶
- 求阶差
- 对阶原则:小阶向大阶看齐
- 尾数求和
- 规格化
- 定义:r = 2:
- 判断:
- 原码:不论正数、负数,第一数位为1
- 补码:符号位和第 一数位不同
- 特例:
- 不是规格化数
- 是规格化数
- 左规:尾数左移一位,阶码减 1,直到数符和第一数位不同为止
- 右规:尾数溢出时,即尾数为:01.xxx或10.xxx时,尾数右移一位,阶码加 1
- 舍入:在对阶和右规过程中,可能出现尾数末位丢失引起误差,需考虑舍入
- 0舍1入法
- 恒置1法
浮点乘除运算
- 乘法:
- 除法:
- 步骤:
- 阶码采用 补码定点加(乘法)减(除法) 运算
- 尾数乘除同定点运算
- 规格化