数制与编码
进位计数法和相互转换
- 进制介绍
每个数所用到的不同符号的个数称之为基数
- 数制的转化
对于 b 进制的数列
可看作 以个位为原点的参考系 个位为A1*b的零次方
例如
整数部分转化方法:A1到An的求法 对于整数部分,第 i 次除以基数 b 所得到的余数即为 Ai .( i 为1、2、…、 n )
小部分的转化方法:第1次乘以基数 b 所得到的整数部分即为 A - i 。( i 为0、1、…、 n ,注意每次乘法之后要把个位置 0)
整数部分
小数部分
练习:
1.
十进制小数部分 在×2时 可能会出现无线循环的情况 故IV不对
2.
定点数的表示和运算
- 真值和机器数
真值是机器数所表示的实际的值
机器数是真值在计算机中的表示
- 无符号数和有符号数
- 重点
(定点数 :将小数点固定 且在运算的过程中小数点的位置永远不发生变换)
(在有符号位的定点小数中,小数点既可以充当小数点又可以作为隔开符号位的标志)
机器数的有符号数,有原码、补码、反码和移码四种形式;
X 表示真值,则:
[ X ]原,表示 x 所对应的原码;
[ X ]补,表示 x 所对应的补码;
[ X ]反,表示 x 所对应的反码;
[ X ]移,表示 x 所对应的移码。
定点数的加减运算1
四位2进制数的mod 为16
将其转化为化为补码的形式> 再进行mod16的操作>
- 转化为补码的操作
例题:
原码和补码互相转换
对于正数:
[ X ]原=[ X ]补
对于负数:
原码符号位不变,末位加一得补码;
补码符号位不变,末位加一得原码。
溢出判断
- 加减运算的溢出判断
溢出原因:数值位不足
用一位符号位来做溢出判断
结果符号与原操作数符号不同则溢出(减法操作都被 转化为加法,所以不会出现操作数符号相异的情况)。 用两位符号位来做溢出判断用两位符号位表示的补码称为变形补码
00表示正,11表示负,变形补码两个符号位都参加运算。
判断:
00:结果为正,无溢出;
01:正溢出;
10:负溢出;
11:结果为负,无溢出。
用一位符号位根据进位情况来做溢出判断
符号位的进位和数据最高位的进位相同则无溢出,否则溢出
例题1:
补充
二进制数1111右移一位相当于乘以几?1
111(二进制数)=15(十进制),1111右移一位变成11110,11110(二进制数)=30(十进制)。
30等于15乘以2,因此右移一位相当于乘以2(二进制数中10)。
一段情况下:二进制向左(右)移动n位,相当于除以(乘以)2的n次方(二进制数10的n次方)
例题2:
采用补码加法判断溢出的方法,即为 数值最高位和符号位都有进位,因此没溢出
例题3: