目录
1.数据表示
1.1 进制转换
十六进制10-15的表示:a(10)、b(11)、c(12)、d(13)、e(14)、f(15)
1.1.1 R进制转十进制
由R进制转十进制使用按权展开法。具体操作为:将R进制数的每一位用$R^k$表示,其中,k值与该位与小数点的距离有关,例如:
二进制⇒:
10100.01 = =20.75
八进制⇒:
604.01==388.01562...
十六进制⇒:
125.086==293.03418...
1.1.2 十进制转R进制
由十进制转R进制使用短除法。具体操作为:用十进制数值不断除以R直至商0结束,记录过程中的余数,最后将余数从下往上排列即可得到转换成的R进制数值,例如:
⇒二进制:
94=1011110
⇒八进制:
94=136
⇒十六进制:
94=5e
1.1.3 二进制转八进制和十六进制
二进制转八进制:从小数点计算,左侧或右侧每三位代表一位八进制数值。例如:
10001110=10 | 001 | 110=2 1 6
二进制转十六进制:从小数点计算,左侧或右侧每四位代表一位十六进制数值。
10001110=1000 | 1110=8 e
1.2 原码补码反码移码
1.2.1 概念
- 原码:将R进制数值转成二级制数值并令首位作为符号位区分正负数(一般按照一个字节8位,不够就补齐8位)
- 反码:在原码基础上,将负数取反(符号位不变)
- 补码:在反码基础上,对负数加1
- 移码:在补码基础上,将首位(符号位)取反,用作浮点运算的阶码
1.2.2 具体实现
例如:求十进制数68和-76的原码、反码、补码和移码
68:
原码⇒01000100
反码⇒01000100
补码⇒01000100
移码⇒11000100
-76:
原码⇒11001100(负数符号位为1)
反码⇒10110011
补码⇒10110100
移码⇒00110100
1.2.3 总结
- 计算机只能进行加法运算,而没有减法概念,例如3-4的操作最终转换成3+(-4)。
- 计算机将原码首位作为符号位加以区分正负数。
- 由1、2可知,仅依靠原码无法实现正数+负数的操作,反码和补码很好的解决这一问题。
- 移码一般用于浮点数的阶码。移码将正负符号位互换,统一现实生活中正数恒大于负数的定理。
- 对于正数而言,反码和补码等于原码,移码将原码符号位变为1即可。
- 对于负数而言,原码的符号位为1,反码将所有位置按位取反(符号位除外),补码在反码基础上加1,移码将原码符号位变为0。
1.2.4 取值范围
n代表一个字节的多少位,一般一个字节8位,即n=8。
原码取值范围:-127—127
反码取值范围:-127—127
补码取值范围:-128—127
补码取值比原码和反码多一位。
1.3 浮点数运算
1.3.1 概念
浮点数运算即科学计数法的数的运算
其中,M称为尾数,R称为基数,e称为指数。
具体操作:对阶⇒尾数计算⇒结果格式化
- 对阶
- 将相加的两个数先转换成科学计数法格式;
- 将指数小的数升阶与大指数的数进行对阶;
- 尾数计算
- 对阶完成后将两数尾数相加。
- 结果格式化‘
- 保证小数点左侧数值不能为0
- 保证小数点左侧数值不能超越基数位数,即R为10时,小数点左侧数值应为个位数。
1.3.2 实例
十进制相加 ⇒ 189+1236:
对阶⇒
科学计数法表示⇒
对阶⇒ 小指数升为大指数
尾数计算⇒
结果格式化⇒保证小数点左侧不等于0且不大于基数R
1.3.3 注意事项
- 浮点数即科学计数法的表示方式;
- 对阶是将小指数升阶为大指数;
- 尾数小数点左侧值不能等于0且不大基数R。