二进制数的表示方法
1.原码、反码、补码
原码
机器数最高为符号位,0正1负。
X=-0.1011,[X]原=11011 ,小数点默认在符号位之后,书写时将其省略。
补码
[X]补=[X]原(X>0)
[X]补=[X]原除符号位取反加1(X<0)
[+0]补=[-0]补=0.0000
补码加法运算
- 补码加补码还是补码
- [X+Y]补=[X]补+[Y]补,减法可看作加相反数。
- 符号位和数值位一样参与运算
溢出处理:当结果超出范围时称为溢出。
- 两正负号相同的数相加,结果符号不同,则溢出。
- 任意符号数相加,符号位进位和数值最高位进位不相等,则溢出。
- 若采用双符号数,00表示整数符号位,11是负数,01为上溢,10为下溢。
多符号位的补码叫“变形补码”。
一般运算用双符号位,存储保留一个fS1。
反码
[X]反=[X]原(X>0)
[X]饭=[X]原除符号位取反(X<0)
移码
[X]移=-[X]补,即对[X]补符号取反。
在计算机中,移码(阶码)只执行加减法运算,且结果要修正,即[X]移+[Y]移+2n=[X+Y]移,也就是对符号位取反。
0的移码唯一且为100...0。
数据小于最小数(移码<=-2n)时称为机器零,置阶码(移码)为0000...0,不管尾数如何,都是浮点数下溢。
2.定点数和浮点数
2.1 定点数
小数点固定在某位,包括小数(小数点在数值左符号右)和整数(小数点在数值右)。
2.2 浮点数
小数点位置可以浮动。
N=M*RE
N:浮点数,Mantissa:尾数,Exponent:阶码,Radix:阶的基数/底,常数,常为2、8、16。
计算机中R都相同,不需在每个数据都表示,因此浮点数如下表示:
MS | E | M |
---|---|---|
尾数符号位,1位 | 阶码,最高位符号位,n+1位 | m位 |
M由MS和M组成一个定点小数。
尾数规格化:R=2且尾数不为0,绝对值大于等于(0.5)10,即大于等于(0.1)2,即小数位最高位是1。对于不规格的数,左右移动尾数,同时修改阶码值,以保持值不变。
尾数为0时,无论阶码如何,浮点数值为0,称为机器0。
IEEE754标准,常用浮点数有以下两种格式:
(1)单精度浮点数(32位)
E:8 bit,M:24 bit(包括一位符号位)
(2)双精度符号位(64位)
E:11 bit,M:53 bit(包括一位符号位)
多数通用机中浮点数尾数常用补码表示,阶码用补码或移码表示。[X]移=-[X]补,即对[X]补符号取反。
IEEE754标准中,一个规格化的32位浮点数N的真值表示为N=(-1)s * (1.M) * 2E-127。
浮点数由于阶码的存在而扩大了数据的范围,32位单精度数范围:-2127~(1-2-23)*2127,精度是24位。