十进制数、二进制数、十六进制数的相互转换
- 整数十进制转二进制有模2取余法。
- 小数转二进制有乘2取整法。
- 二进制转十六进制:二进制从低位到高位四个为一组(高位不够补0),转换为十六进制。反之为十六进制转换二进制。
- 十进制转十六进制:第一种先把十六进制转换为二进制,再把二进制转换为十六进制。第二种模16取余法,十六进制即为倒序的余数。
机器数的表示方法:原码、补码、反码、移码
- 原码:用0、1取代符号位。0表示正数,1表示负数。与真值最接近的表示形式。
- 补码:机器数的最高位为符号位。0表示正数,1表示负数。正数的补码是本身,负数的补码是取反再加1,0的补码是0。
- 反码:符号位不变各位取反。
- 移码:符号位取反的补码。用来表示浮点数的阶码。
Note
- 0表示形式唯一的是补码和移码
- 补码左移补0,右移补1
补码加减法运算时
采用双符号位运算,若双符号位为00或者11则不溢出,反之溢出。
浮点数表示方法
$$N=MR^E$$
| 尾数符号位(Ms) | 阶码(E) | 尾数(M) |
| :————–: | :——-: | :——-: |
- Ms为尾数的符号位,设置在最高位。
- E为阶码,一般为整数,其中有一位符号位,设置在E的最高位,用来表示正阶或负阶。
- M为尾数,为了保证数据精度,尾数通常用规格化(尾数最高位不能为0)表示:当R=2且尾数值不为0时,其绝对值应大于或等于$(0.5)_{10}$。对于非规格化的浮点数通过将尾数左移或右移并修改阶码值使之满足规格化要求。
奇偶校验码
奇校验:将机器数凑成奇数个1
偶校验:将机器数凑成偶数个
数据:1230 0 0 0 0 1 1 1 0
奇校验1231 0 0 0 0 0 0 1 1 1 1 0
偶校验1230 0 0 0 1 0 0 1 0 1 1 0
补码一位乘:布斯公式法
Note: 乘数最后一位补0。
- $Y_{i+1}-Yi=0(Y{i+1}Y_i=00$或$11)$,部分积加1,右移一位。
- $Y_{i+1}-Yi=1(Y{i+1}Y_i=10)$,部分积加[X]的补码,右移一位。
- $Y_{i+1}-Yi=1(Y{i+1}Y_i=01)$,部分积加[-X]的补码,右移一位。
- 最后一步$(i=n+1)$不移位。
累加n+1次(n为X和Y的小数位数),右移n次。
原码一位除:加减交替法
定点除法运算有 恢复余数法 和 加减交替法 ,在计算机中最常使用的是加减交替法,因为它的操作步数少,而且也不复杂。
- 当求得的余数为负时,加上除数。
- 当求得的余数为正时,减去除数。
- 对定点小数除法要保证除数和被除数的绝对值小于1。
- 商的符号为两数字符号的异或。
浮点数的加减运算(分五个步骤)
- 对阶
- 尾数加减
- 规格化
- 舍入
- 判溢出
- 得到结果
定点原码数、定点补码数的表示范围
机器字长8位包含一位符号位
定点原码表示范围为$[-2^{7}+1, 2^7-1]$
定点补码表示范围为$[]$