1 进制转换
二进制与十进制之间
2 求原码 反码 补码
三者特殊情况 +0 -0补码反码是否一样
为什么用补码运算? 简化运算器设计
正负数补码运算
判断是否有溢出
1
2
3
x+y的补
x-y的补
定点数的 + -法
2.1 原码
整数
x 为真值
n 为整数的位数
用 逗号 将符号位 和数值部分隔开
用 小数点 将符号位和数值部分隔开
二进制原码表示规则:
1. 符号位:用0表示正号+,用1表示负号- ;
2. 数值位:数值位不变,与真值的数值位保持一致。
例 1 已知 [x]原 = 1.0011 求 x
例 2 已知 [x]原 = 1,1100 求 x
例 3 已知 [x]原 = 0.1101 求 x
例 4 求 x = 0 的原码
2.2 补码
正数的补数即为其本身
补码定义
求补码的快捷方式
当真值为负时:
1.符号位不变
2.数值位,每位取反,末位加1
例 5 已知 x =-122 求 [x]补
已知补码求原码
当真值为负时:
符号位不变
数值位,每位取反,末位加 1
补码加法(正负数补码运算)
在模2的n次方+1的意义下,任意两数的补码的和, 等于这两个数之和的补码。
【例1】 x=+1011 , y=+0101 , 求 x+y=?
【例2】: x=+1001 , y=-0101 , 求 x+y=?
补码加法特点:
-
符号位作为数的一部分参加运算
-
超过2n+1的进位要丢掉。
补码减法(正负数补码运算)
[-y]补 的定义 :对[y]补包括符号位逐位取反 ,最后末位加1,
【例1】:已知x1=-1110 , x2=+1101 , 求: [x1]补 , [-x1]补 , [x2]补 , [-x2]补 。
【例2】x=+1101 , y=+0110 , 求 x-y=?
例 设机器数字长为 8 位(含 1 位符号位),
且 A = 15, B = 24,用补码求 A + B和 A -- B
判断溢出
(1) 一位符号位判断溢出(根据SA、SB和Sf的关系)
(2) 硬件判断逻辑二 (根据Cf与C的关系)
(3) 硬件判断溢出逻辑三(从双符号位)
2.3 反码
例8 已知 [x]反 = 0,1110 求 x
例9 已知 [x]反 = 1,1110 求 x
2.4 三种机器数的小结
最高位为符号位,书写上用","(整数)或"."(小数)将数值部分和符号位隔开
对于正数,原码 = 补码 = 反码
对于负数 ,符号位为 1,其 数值部分
原码与真值的数值位保持系统
反码:原码除符号位外每位取反
补码:原码除符号位外每位取反末位加 1
2.5 移码
移码在数轴上的表示:等价于将x正向平移或者增加2的n次方
移码的符号位不在表示 符号,而是表示数值;
移码没有负数。
移码的特点:
3 浮点数形式
尾数 + 阶码(用什么表示:移码 为什么?为比较两个数的指数大小)
不靠+ - 法
IED 754标准:-127
3.1 浮点表示
浮点表示中,小数点的位置可按需浮动。
格式模型
jf 代表阶码的符号
Sf 代表浮点数的符号
m 其位数反映浮点数的表示范围
n 其位数反映浮点数的精度
jf 和 m 共同表示小数点的实际位置
引入浮点数的意义
相同字长时,浮点数的表示范围更大、 精度更高!
【例】 设机器数字长为 24 位,欲表示±3万的十进制数,试问在保证数的最大精度的前提下,除阶符、数符各 取1 位外,阶码、尾数各取几位?
3.2 IEEE 754 标准
有32位浮点数(单精度)和64位浮点数(双精度)
32位浮点数
S=浮点数的符号位, 0表示正数, 1表示负数;
E=阶码, 8位,采用移码表示, 阶符隐含;
M=尾数, 23位,纯小数表示,且真值=1+M;
阶码E采用移码形式,但只偏移27-1 (不是27)
64位浮点数
阶码, 11位
尾数, 52位
对阶码E编码时,只偏移210-1 (标准移码偏移210);
【例1】若浮点数x的754标准存储格式为(41360000)16,
求其浮点数的十进制数值。
【例2】将数(20.59375)10转换成754标准的32位浮点数的二进制存储格式。
【例3】设机器字长16位,采用定点表示法
(1) 定点原码整数表示时,最大正数是多少?最小负数是多少?
(2) 定点原码小数表示 ,最大正数是多少?最小负数是多少?