计算机组成与体系结构:数据表示篇 —— 进制转换、原码反码补码移码、浮点数运算

目录

1.数据表示

1.1 进制转换

1.1.1 R进制转十进制

1.1.2 十进制转R进制

1.1.3 二进制转八进制和十六进制

1.2 原码补码反码移码

1.2.1 概念

1.2.2 具体实现

1.2.3 总结

1.2.4 取值范围

1.3 浮点数运算

1.3.1 概念

1.3.2 实例

1.3.3 注意事项


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 = 1\times 2^{4}+0\times2^{3}+1\times2^{2}+0\times2^{1}+0\times2^{0}+0\times2^{-1}+1\times2^{-2}=20.75

八进制⇒:

604.01=6\times 8^{2}+0\times8^{1}+4\times8^{0}+0\times8^{-1}+1\times8^{-2}=388.01562...

十六进制⇒:

125.086=1\times 16^{2}+2\times16^{1}+5\times16^{0}+0\times16^{-1}+8\times16^{-2}+6\times16^{-3}=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 概念

  1. 原码:将R进制数值转成二级制数值并令首位作为符号位区分正负数(一般按照一个字节8位,不够就补齐8位)
  2. 反码:在原码基础上,将负数取反(符号位不变)
  3. 补码:在反码基础上,对负数加1
  4. 移码:在补码基础上,将首位(符号位)取反,用作浮点运算的阶码

 1.2.2 具体实现

例如:求十进制数68和-76的原码、反码、补码和移码

68:

原码⇒01000100

反码⇒01000100

补码⇒01000100

移码⇒11000100

-76:

原码⇒11001100(负数符号位为1)

反码⇒10110011

补码⇒10110100

移码⇒00110100

1.2.3 总结

  1. 计算机只能进行加法运算,而没有减法概念,例如3-4的操作最终转换成3+(-4)。
  2. 计算机将原码首位作为符号位加以区分正负数。
  3. 由1、2可知,仅依靠原码无法实现正数+负数的操作,反码和补码很好的解决这一问题。
  4. 移码一般用于浮点数的阶码。移码将正负符号位互换,统一现实生活中正数恒大于负数的定理。
  5. 对于正数而言,反码和补码等于原码,移码将原码符号位变为1即可。
  6. 对于负数而言,原码的符号位为1,反码将所有位置按位取反(符号位除外),补码在反码基础上加1,移码将原码符号位变为0。

1.2.4 取值范围

 n代表一个字节的多少位,一般一个字节8位,即n=8。

原码取值范围:-127—127

反码取值范围:-127—127

补码取值范围:-128—127

补码取值比原码和反码多一位。

1.3 浮点数运算

1.3.1 概念

浮点数运算即科学计数法的数的运算

N=M\times R^{e}

其中,M称为尾数,R称为基数,e称为指数。

具体操作:对阶⇒尾数计算⇒结果格式化

  1. 对阶
    1. 将相加的两个数先转换成科学计数法格式;
    2. 将指数小的数升阶与大指数的数进行对阶;
  2. 尾数计算
    1. 对阶完成后将两数尾数相加。
  3. 结果格式化‘
    1. 保证小数点左侧数值不能为0
    2. 保证小数点左侧数值不能超越基数位数,即R为10时,小数点左侧数值应为个位数。

1.3.2 实例

十进制相加 ⇒ 189+1236:

对阶⇒

科学计数法表示⇒1.89\times 10^{2}  1.236\times10^{3}

对阶⇒ 小指数升为大指数

0.189\times10^{3}

尾数计算⇒ 1.425\times10^{3}

结果格式化⇒保证小数点左侧不等于0且不大于基数R

1.3.3 注意事项

  1. 浮点数即科学计数法的表示方式;
  2. 对阶是将小指数升阶为大指数;
  3. 尾数小数点左侧值不能等于0且不大基数R。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Shaco、LYF

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值