计算机组成原理——定点数与浮点数

计算机中常用的数据表示格式有两种,一是定点格式,二是浮点格式。一般来说,定点格式容许的数值范围有限,要求的处理硬件比较简单。而浮点格式容许的数值范围很大,要求的处理硬件比较复杂。

一、定点数的表示方法

定点格式:即约定机器中所有数据的小数点位置固定不变。 由于约定的小数点位置固定不变,小数点就不再使用 “ . ” 表示。原理上,小数点位置固定在哪一位都可以,但是通常将数据表示为纯小数纯整数
纯小数: 整数部分是零的小数(小于1的正小数)。如0.1,0.66,0.987
纯整数: 正整数。如1,32,99

假设用n+1位字来表示定点数x,为了将数据进行统一处理,符号位放在最左边,并用数值0和1分别表示正号和负号。这样,就得出了定点数表示的数据格式。

如果x表示的是纯小数,那么小数点位于符号位的后面,当符号和尾数都为0时,x的绝对值最小,|x|min=0;当符号和尾数都为1时,x的绝对值最大。

如果x表示的是纯整数,那么小数点位于最低位x0的后面。

二、浮点数的表示方法

浮点格式(浮点表示法):把数的范围和精度分别表示的方法,相当于数的小数点位置随比例因子的不同而在一定的范围内可以自由浮动。

其中M为浮点数的尾数,是一个纯小数。e是比例因子的指数,称为浮点数的指数,是一个整数。

在机器中表示一个浮点数时,一是要给出尾数,用定点小数形式表示。尾数部分给出有效数字的位数,因而决定了浮点数的表示精度。二是要给出指数(常称为阶码),用整数形式表示,阶码指明了小数点在数据中的位置,因而决定了浮点数的表示范围。三是给出浮点数的符号,包括阶符和数符。

早期计算机中,一个机器浮点数由阶码、尾数、及符号位组成:

经过改进,为了便于软件移植,按IEEE754标准,32位浮点数和64浮点数的标准格式:

不论是32位浮点数(单精度)还是64位浮点数(双精度),由于基数2是固定常数,对每一个浮点数都一样,所以不必用显示方式来表示它。阶符采用隐含方式,即采用移码方式来表示正负指数。移码方式对两个指数大小的比较和对阶操作都比较方便,因为阶码域越大,指数值越大。采用这种方式时,将浮点数的指数真值e变成阶码E时,应将指数e加上一个固定的偏移值127(01111111),即E=e+127。

  • 在32位的浮点数中,S是浮点数的符号位,占1位,S=0表示正数,S=1表示负数。
    E是阶码,占用8位
    M是尾数,放在低位部分,占用23位,小数点位置放在尾数域最(最高)有效位的右边。
  • 在64位的浮点数中,符号位1位,阶码域11位,尾数域52位,指数偏移值是1023

不论是32位浮点数还是64位浮点数,如果不对浮点数的表示作出明确规定,同一个浮点数的表示就不是唯一的。

例如:十进制数1.25可以表示成
等多种形式。为了提高数据的表示精度,当尾数的值不为0时,尾数域的最高有效位应为1,这称为浮点数的规格化表示


关于规格化
(1)规格化的定义
r=2(基数为2) 0.5 <= |s| < 1
(2)规格化数的判断

  • 当 s > 0(正数)时,规格化数形式:
    真值 0.1xx…xxx
    原码 0.1xx…xxx
    补码 0.1xx…xxx
    反码 0.1xx…xxx
  • 当 s < 0(负数) 时,规格化数形式
    真值 -0.1xx…xxx
    原码 1.1xx…xxx
    补码 1.0xx…xxx
    反码 1.0xx…xxx

规格化数的规律
原码:不论正数还是负数,第一数位为1
补码:符号位和第一数位不同

如何将不是规格化的数转换成规格化数?
(1)左规
尾数左移一位,阶码减一,直到数符和第一数位不同为止
[x+y]补 = 00,11 ; 11.1001
左规之后:[x+y]补 = 00,10 ; 11.0010(00,11阶码减一,11.1001尾数左移一位)

(2)右规
当尾数溢出(大于1)时,需要右规,即尾数出现01.xx…xxx,10.xx…xxx时

定点数与浮点数的表示方法相关推荐

  1. 数制和码制(数制的转换的方法,BCD码<8421,2421,5421,余三码>,格雷码,原码,反码,补码,定点数和浮点数)

    目录 1.数制的转换 1)二,八,十六进制进制转十进制 加权系数求和法 2)十进制转二,八,十六进制 除基取余法(短除法) 减权定位法 3)二,八,十六进制的相互转换 2.BCD码 3.格雷码 4.原 ...

  2. python浮点数类型与数学_Python3标准库:decimal定点数和浮点数的数学运算

    1. decimal定点数和浮点数的数学运算 decimal模块实现了定点和浮点算术运算,使用的是大多数人所熟悉的模型,而不是程序员熟悉的模式(即大多数计算机硬件实现的IEEE浮点数运算).Decim ...

  3. 定点数和浮点数_Simulink模型中定点数的介绍

    本文摘要: 主要介绍Simulink模型中的定点数的概念,使用注意点,以及定点数与浮点数之间的数据转换. 定点数与浮点数的概念 当我们给Simulink的模块输出设置数据类型时,可以看到有如下的选项: ...

  4. 定点数与浮点数的区别

    1. 什么是浮点数 在计算机系统的发展过程中,曾经提出过多种方法表达实数.典型的比如相对于浮点数的定点数(Fixed Point Number).在这种表达方式中,小数点固定的位于实数所有数字中间的某 ...

  5. 定点数和浮点数加减乘除运算详解【计算机组成原理】---真的建议收藏啊!!!

    前言: 你知道计算机内部是如何进行加减运算的吗?可能你知道,那你知道计算机内部是如何进行乘除法运算的呢?肯定和我们十进制运算是不一样的.当我查找资料的时候,发现除了书本很少有这样的知识点.所以我想和大 ...

  6. 定点数与浮点数(小数)

    计算机中机器数的类型:定点数(整数)与浮点数(小数) 本文内容参考自王达老师的<深入理解计算机网络>一书<中国水利水电出版社> 一.计算机中一共有两种机器数类型: 机器数就是计 ...

  7. 【学习笔记】【计算机组成原理】定点数与浮点数的运算;LRU算法实现;cache命中;流水线冲突、冲刷;

    目录 前言 一.计算机组成原理-背景 1.计算机的发展简史 2.计算机的分类 3.计算机的体系结构 4.计算机的层次与编程语言 5.计算机的计算单位 6.计算机的字符与编码集 二.计算机组成原理-组成 ...

  8. c语言保留小数点后n位_C语言(2)- 定点数和浮点数

    (本文为原创,版权归作者所有) 变量的基本类型里包含了整数和小数,它们是如何由一组0和1来表示的呢? 在数学的世界里,实数可以涵盖一个数轴上所有的点,它应该可以表示我们在日常生活中碰到的大部分的数.实 ...

  9. 计算机组成原理学习笔记:定点数、浮点数、原码、反码、补码、移码

    定点数与浮点数 所谓定点数就是指小数点的位置固定不变 而浮点数是小数点的位置是不固定的,会浮动 1 ) 定点数 用熟悉的十进制数来类比,定点数就是我们平时更习惯使用的常规的计数方式,我们会显式的标明小 ...

最新文章

  1. 如何理解物体的6D位姿估计任务?
  2. TiM:rDNA拷贝数的种内变化影响微生物群落分析吗?
  3. GNU make manual 翻译(二十六)
  4. AOSP Ubuntu命令
  5. IT界程序员几大恶习能立即让你变穷,你有吗?
  6. gRPC客户端创建和调用原理解析
  7. 【Python基础】在pandas中使用pipe()提升代码可读性
  8. OpenGL 帧缓冲Framebuffers
  9. 深入浅出学习Struts框架(九):分析Struts框架实例4
  10. object取值_this的原理、函数的不同调用方式this取值、以及不同环境下this的取值、函数四种调用方法...
  11. java 整数存储为2进制补码形式
  12. bootStrap库介绍
  13. 帝国 listenews.php,帝国cms7.2后台信息列表页批量添加tags
  14. IDEA新项目代码上传到gitlab远程仓库
  15. asp.net core web api token验证和RestSharp访问
  16. python自动化测试学习笔记-4内置函数,处理json
  17. tpx色卡电子版_潘通色卡电子版Pantone TPX(新175色)
  18. charles 代理设置
  19. js 分析——百度模拟登录(一)
  20. 数字信号和模拟信号区别

热门文章

  1. 中铁建工及董事长张建喜带领公司发展
  2. ASCII码表和转义字符表
  3. java计算增长率,计算复合年增长率
  4. apidoc 的安装
  5. opendrive数据格式解析思维导图 , opendrive高精地图是自动驾驶领域使用最为广泛的开源高精地图标准级地图格式
  6. Android——Matirx 自动生成火焰图小工具
  7. 2020中兴捧月算法精英挑战赛-迪杰斯特拉派初赛(未来城市物流系统)总结
  8. linux远程查看其他电脑配置,配置Linux系统的网络,以便于其他电脑远程操作服务器!...
  9. vue路由重定向到登录页面_Vue 组件单元测试究竟测试什么?
  10. PHP生成二维码存到本地