浮点数的表示及规格化——计算机组成原理
下载需积分: 19 | PDF格式 | 9.08MB |
更新于2023-12-31
| 126 浏览量 | 举报
计算机组成原理之浮点数的表示
一、引子
通过之前几个小节的学习,我们已经知道了定点数怎么在计算机里表示,包括定点整数和定点小数。从这个小节开始,我们要学习浮点数在计算机里的表示和运算。这个小结中,我们先介绍浮点数如何表示。我们会介绍浮点数它有什么作用,还有一个基本的原理。另外,考试中常考的一个问题是浮点数的规格化。最后,我们还会简单地介绍浮点数的表示范围相关的问题。这方面的内容其实已经从考研大纲里边删除了。所以关于浮点数的表示范围,我们只做一个简要的了解。
二、定点数的局限性
首先来看一下我们之前学习的定点数它有什么局限性。来看这样的一个故事,我现在的财富净值是-8540块钱,为什么是一个负值?因为今天刚好是我的蚂蚁花呗的还款日。我的这些财富,这些净资产其实可以用一个2字节的short短整型变量就可以表示。
然而,在某些情况下,定点数并不能满足我们的需求。比如,当我们需要表示非常大或非常小的数时,定点数的表示范围就会有限制,不能够准确地表示这些数。而浮点数的出现就能够解决这个问题。
三、从科学计数法理解浮点数
1. 十进制
在浮点数的表示中,我们常使用科学计数法。以十进制为例,科学计数法将一个数表示为一个有限的数字乘以10的幂。比如,300000可以表示为3 x 10^5。这样,无论数的大小如何,都可以用有限的位数来表示。
2. 二进制
在计算机中,我们使用二进制进行计算和表示。同样地,浮点数的表示也采用了科学计数法的思想。浮点数的表示由两部分组成:尾数和指数。
浮点数的表示
浮点数的表示相比于定点数更加灵活。它将一个数表示为一个尾数乘以2的指数次幂。其中,尾数可以是任意数字,指数可以是任意整数。
补充练习
为了更好地理解浮点数的表示,我们进行一些练习。假设我们希望表示数值12.75,首先我们需要将数值转换为二进制形式。
浮点数尾数的规格化
在浮点数的表示中,尾数的规格化是非常重要的。它可以提高浮点数的精确度和表示范围。
1. 左规
左规是将尾数左移,使其最高位为1。以十进制为例,如果尾数是0.101,左规将其变为1.01。同样,对于二进制的尾数,左规的步骤也是类似的。
2. 右规
右规是将尾数右移,使其最低位为1。以十进制为例,如果尾数是1.01,右规将其变为0.101。同样,对于二进制的尾数,右规的步骤也是类似的。
规格化浮点数的特点
1. 原码
在浮点数的表示中,原码有正数和负数两种情况。正数的原码与其本身相同,负数的原码则是其绝对值的原码前面加上一个符号位。
2. 补码
在浮点数的表示中,补码同样分为正数和负数两种情况。正数的补码与其原码相同,负数的补码是将其原码各位取反(包括符号位),然后加1。
3. 案例
为了更好地理解原码和补码的表示,我们进行一些案例分析。
4. 补充说明
在浮点数的表示中,正数和负数的表示方式是不同的。正数采用原码表示,而负数采用补码表示。这是由于补码的表示方法可以更好地处理负数的运算。
六、总结回顾
本文主要介绍了计算机组成原理中,浮点数的表示。通过科学计数法的理解,我们知道浮点数是如何表示的,并且对浮点数的规格化进行了详细的解释。同时,我们也了解了浮点数的表示范围以及原码和补码的表示方式。通过学习浮点数的表示,我们可以更好地理解浮点数在计算机中的运算过程。
相关推荐










雨翼轻尘
- 粉丝: 7w+
最新资源
- 掌握Ember.js用户活跃度跟踪,实现高效交互检测
- 如何在Android中实现Windows风格的TreeView效果
- Android开发:实现自定义标题栏的统一管理
- DataGridView源码实现条件过滤功能
- Angular项目中Cookie同意组件的实现与应用
- React实现仿Twitter点赞动画效果示例
- Exceptionless.UI:Web前端托管与开发支持
- 掌握Ruby 1.9编程技术:全面英文指南
- 提升效率:在32位系统中使用RamDiskPlus创建内存虚拟盘
- 前端AI写作工具:使用AI生成内容的深度体验
- 综合技术源码包:ASP学生信息管理系统
- Node.js基础爬虫教程:入门级代码实践
- Ruby-Vagrant:简化虚拟化开发环境的自动化工具
- 宏利用与工厂模式实践:驱动服务封装技巧
- 韩顺平Linux学习资料包:常用软件及数据库配置
- Anime-Sketch-Colorizer:实现动漫草图自动化上色