纯小数的原码、补码、反码表示
纯小数
首先了解一下什么是纯小数:机器数有无符号和带符号之分。无符号数表示正数,在机器数中没有符号位。对于无符号数,若约定小数点的位置在机器数的最低位之后,则是纯整数;若约定小数点的位置在机器数的最高位之前,则是纯小数。对于带符号数,机器数的最高位是表示正、负的符号位,其余为则表示数值。
通俗的说,纯小数就是只存在小数点后的值,小数点前为0,例如:0.1,0.5,0.3,0.8等。
纯小数的进制表示
原码 | 实际值 |
---|---|
0000 | 0 |
0100 | 1/2 |
0010 | 1/4 |
0001 | 1/8 |
1001 | -1/8 |
1010 | -1/4 |
如何理解上面的纯小数表示呢?
- 从左往右数第一位为符号位(0:表示正数;1:表示负数)
- 接着将小数转化为分数(方便计算)例如:0.5 可以表示为1/2
- 1/2 我们看分母位,这里的分母为2 ,2的1次方为2,所以值占1位
- 再看分子,分子为1,对于二进制,每一位都是 2 的次方,每一位就可以表示为1,2,4,8 …
- 分子1的二进制可表示为1 ,再补全符号位,纯小数1/2 就可以表示为 01(补全后面两位就为 0100 记住这里的第一位始终是符号位 )
同样的,例如 1/8 ,是正数,所以第一位符号位是 0 ,分母为 8 ,2的3 次方为8,所以值占3位,分子为1,二进制就是 001,加上符号位0,最后的结果就是0001
对于负数纯小数,计算方式完全一样,唯一改变的就是将第一位的符号位由 0 改为1
纯小数的补码表示:
1、正数纯小数补码就是其本身
2、负数纯小数补码表示:先将负数纯小数加1 得到一个值,将这个值按照上面纯小数表示方法计算即可
例1:-1/8
- -1/8 加上1等于7/8,7/8的分子为7,分母为8,
- 先看分母,分母为8,二进制里2的3次方为8,这个值就占3位,再加上符号位1位,共占4 位
- 再看分子,分子为7,7的二进制为111(占3位)
- 加上符号位的值1,最后的结果就是1111
例2:-3/4
- -3/4加上1等于1/4,1/4的分子为1,分母为4,
- 先看分母,分母为4,二进制里2的2次方为4,这个值就占2位,再加上符号位1位,共占3位
- 再看分子,分子为1,1的二进制为01(占2位)
- 加上符号位的值1,最后的结果就是101(为了好看,补全四位,最后位补0,即:1010)
原码 | 实际值 | 补码 |
---|---|---|
0001 | 1/8 | 0001 |
0010 | 1/4 | 0010 |
1111 | -7/8 | 1001 |
1101 | -5/8 | 1011 |