浮点数

2023-11-16

为什么要有浮点数?

在这里插入图片描述

从十进制科学计数法理解浮点数:

在这里插入图片描述

计算机中二进制的浮点数:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二进制中阶码的底也可以不为2。
例如,二进制中阶码的底可以为4、为8等等。
当阶码的底为2,假设阶码为+1,则小数点需要后移一位(即算数左移一位);
当阶码的底为4时,假设阶码为+1,则小数点需要后移两位(即算数左移两位)。
在这里插入图片描述
例如:
在这里插入图片描述
在这里插入图片描述
例题:
在这里插入图片描述
在这里插入图片描述
如果使用1个字节的空间去存储,那么阶码部分在内存中占3位,位数部分在内存中占5位,刚刚好。
在这里插入图片描述
在这里插入图片描述
阶码部分在内存中占3位,位数部分在内存中占6位,但是最后一位存不下,只能丢弃掉了。
那么问题来了,如果把最后一个1丢弃了,就意味着b这个浮点数的精度就降低了。
那么能不能把b这个浮点数的表示进行优化,使其在存储空间不变的情况下尽可能地保留它的精度呢?
这个问题就是所谓的浮点数位数规格化的问题。

浮点数尾数规格化:

在这里插入图片描述
在这里插入图片描述
左规:

以十进制为例:
在这里插入图片描述
确保尾数的最高是个有效值。否则可能会丧失精度。

那么现在就把这种思想迁移到二进制的浮点数,比如上面的浮点数b,尾数的第一位0是符号位,必须保留,而小数点后面的这一位也是0,但它是个无效值,所以没有必要保留它,那么怎么处理呢?

可以让尾数部分小数点右移一位(算数左移一位),然后让阶码的值减一即可,此时b的真值是保持不变的,但是由于进行了移位运算,丢弃了最高位无效数值位,所以最低位的空位就可以用来存储原本丢弃的1,这样就可以保证在浮点数整体存储空间不变的情况下,尽可能保留更多的精度。
在这里插入图片描述
右规:
在这里插入图片描述
规格化浮点数的特点:
在这里插入图片描述
在这里插入图片描述
例题:
在这里插入图片描述
根据上述特点,尾数是负数,所以尾数数值位最高位必须为0,需要把尾数算数左移3位,低位补0,所以规格化的尾数为:1.0100000,因为尾数算数左移了3位(左规),所以阶码需要减3,为:0.011。

浮点数表示范围:

在这里插入图片描述

浮点数算术标准(IEEE 754):

为什么要有浮点数的标准?

如果不能确定一个统一的规则,
例如阶码在内存中占多少位?
尾数在内存中占多少位?
各自采用原码、补码还是移码来表示?
……
如果不能没有这样一个统一的规则的话,那么在计算机之间进行数据传输的时候就可能会出现解析方面的困难和问题。

所以IEEE(电气电子工程师协会)就制定了IEEE 754这样一个规则。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
1.阶码部分用移码表示,阶码使用移码表示的根本目的在于:
通过加一个固定偏移值使负数转换为正数,使得数值大者其表示的指数也大,但是注意IEEE 754移码偏置值与之前非标准不同了!!!
2.尾数用原码表示,而且尾数部分会隐藏一个表示最高位的1,因为这样的话就免去了尾数规格化的步骤。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
例题:
在这里插入图片描述
其中移码求法也可以先把阶码真值加上单精度浮点型偏移量的十进制表示,再由十进制转换成二进制原 码,再由原码转换成移码。
在这里插入图片描述
最小绝对值与最大绝对值:
在这里插入图片描述
若要表示的数绝对值还要更小/更大怎么办?

这就需要用到:
在这里插入图片描述
在这里插入图片描述
IEEE 754小结:
在这里插入图片描述

扩展:

1.
C语言的float通常是指IEEE单精确度,而double是指双精确度。

2.为什么c语言中float和int都是32位,但是表示范围不同?
float和int都是32位,表示范围不同是因为存储的数类型不同。

浮点类型的单精度值具有4个字节,也就是32位。包括一个符号位、一个8位二进制指数和一个23位尾数。用于存储单精度浮点数或双精度浮点数。提供了一个大约在 -3.4E+38 ~ 3.4E+38 之间的范围。

(e为实型数据的指数表示形式,其中,e的前后必须要有数字,e前面为十进制数,e后面为十进制整数,可以带符号。)

int类型在内存中占用了4个字节,也就是32位。int类型是有符号的,因此,32位并不会全部用来存储数据,包括一个符号位,使用其他的31位来存储数据。用于存储整数类型变量。-2147483648 ~ 2147483647[-2^31 ~ 2^31-1]。

3.为什么c语言中long和int都是32位,但是long的表示范围更大?
C语言开始时只有char(8位)和int(16位)两种,后来随着发展又加入了short(16位)和long(32位),此时,int可以是16位或者32位,依赖于平台和后续的兼容性。再后来当64位出现时,long long(64位)又被添加进来,为了进行规范,对较小的一些类型的范围就有了一些调整,逐渐稳定为int32位,long可以有多种定义,可以是32位,也可以是64位。

   C++标准上只是说long至少要和int一样大,所有整数类型实现时要满足如下规范:

   sizeof(char)  ==  1

   sizeof(char)  <=  sizeof(short)

   sizeof(short)  <=  sizeof(int)

   sizeof(int)  <=  sizeof(long)

   sizeof(long)  <=  sizeof(long long)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

浮点数 的相关文章

  • 总线带宽计算公式_「计算机组成原理」:总线概述

    计算机系统的五大部件之间连接的方式有两种 xff0c 一种是各部件之间使用单独的连线 xff0c 称为分散连接 一种是将各部件连到一组公共信息传输线上 xff0c 称为总线连接 总线的基本概念 计算机系统的五大部件之间连接的方式有两种 xf
  • 计算机组成原理——总线

    一 总线概述 1 xff0e 基本概念 xff08 1 xff09 总线简图 每个总线可能由很多根信号线组成 xff08 2 xff09 总线的物理实现 如上图 xff0c 4根信号线组成 一根 总线 xff0c 所有硬件部件都可以通过这根
  • Quartus II 13.0波形仿真

    先放结论 Quartus II 13 0有自带的仿真工具 能实现波形仿真 之前一直找不到关于Quartus II 13 0的波形仿真 然后百度的都是说quartus ii 9 0之后的版本就没有这个功能了 只能再下一个modelsim之类的
  • 大端模式(big-endian)与小端模式(little-endian)

    参考自 大端模式与小端模式 大端模式是指数据的低位保存在内存的高地址中 而数据的高位保存在内存的低地址中 小端模式是指数据的低位保存在内存的低地址中 而数据的高位保存在内存的高地址中 大小端模式的由来 在计算机系统中 我们是以字节为单位的
  • 计算机组成原理——第六章测试题(上)

    1单选 1分 计算机中的数据可以存放在 C 中 A 寄存器 B 主存 C 都可以 D 硬盘 2单选 1分 下列对源码 补码和反码叙述正确的是 B A 当真值为正时 原码和补码的表示形式不同 但其符号位都用 0 表示 B 三种机器数的最高位均
  • 5.6.1_浮点数的表示

    文章目录 一 引子 二 定点数的局限性 三 从科学计数法理解浮点数 1 十进制 2 二进制 1 定点数 2 浮点数 浮点数的表示 补充 练习 四 浮点数尾数的规格化 1 左规 1 十进制 2 二进制 2 右规 1 规则 2 例子 五 规格化
  • 多处理器的基本概念

    SISD 单指令流单数据流 特性 各指令序列只能并发 不能并行 每条指令处理一两个数据 不是 数据级并行技术 硬件组成 一个处理器 一个主存储器 若采用指令流水线 需设置多个功能部件 采用多模块交叉存储器 SIMD 单指令流多数据流 特性
  • 第二章 计算机发展与应用

    计算机从诞生至今已经经历了多个阶段的发展 包括 1 电子管时代 1940年代 1950年代 计算机使用电子管作为主要的电子元件 这些计算机体积庞大 功耗大 但是它们标志着计算机的诞生 并且在二战期间被广泛应用于军事领域 2 晶体管时代 19
  • 2.4总线操作和定时

    文章目录 一 引子 二 介绍 1 总线周期 2 总线定时规范 三 同步定时方式 1 过程 2 特点 3 优缺点 优点 缺点 四 异步定时方式 1 介绍 2 三种方式 1 不互锁方式 2 半互锁方式 3 全互锁方式 3 优缺点 优点 缺点 五
  • 【计算机组成原理笔记】1.1计算机系统简介

    1 1计算机系统简介 计算机系统由硬件 软件两部分组成 硬件是看得到摸得到的实体 如硬盘 显卡 主板等 软件程序通常寄寓于各种媒体 如RAM ROM 磁带 光盘等 RAM 随机存取存储器 英语 Random Access Memory 缩写
  • 如何吃透csapp

    读薄 读厚csapp 非常不错的博客 既有对书本内容的理解 也有对实验内容的剖析 当然我还没看 先马 并且立个flag 必看完csapp 看完奖励自己一趟旅行 EOF 补充 本书的使用指南
  • 计算机系统的多级层次结构

  • 计算机组成原理笔记03

    计算机组成原理笔记03 做题笔记1 内容 教材的思维导图 课后练习 计算部分 中国大学MOOC计算机组成原理 计算部分 1 教材的思维导图 在看题之前 最好先看这篇定点运算 写的特别清晰明了 2 课后练习 3 2 选择题 1 一个C语言程序
  • 5.5_数据的存储和排列

    文章目录 一 大小端模式 二 边界对齐 在这个小结中 我们要探讨的是 数据的存储和排列 一 大小端模式 首先来看一个之前提到过的问题 叫做大小端模式 我们在内存里经常会存储某一些多字节的数据 比如 c 语言里的 Int 型变量 在很多时候占
  • 计算机的性能公式

    cpu执行时间 简称CPU时间 表示执行某一任务在CPU上所花费的时间 不包括等待I O或运行其他程序的时间 程序的cpu执行时间 cpu时钟周期数 时钟周期时间 cpu时钟周期数 主频 要想缩短cpu执行时间 最简单的方法就是缩短cpu的
  • 计算机组成原理——万字详解

    引言 作为还在学习的学生和不断进步的同事 学习计算机组成原理具有以下几个重要的好处 它可以帮助你深入理解计算机系统的工作原理 包括处理器 存储器 输入输出设备等组成部分之间的交互关系 这种深入理解可以提高你对计算机系统的整体把握能力 让你能
  • 计算机组成原理——指令系统题库

    指令系统题库 选择题 1 以下有关指令系统的说法中错误的是什么 A 指令系统是一台机器硬件能执行的指令全体 B 任何程序运行前都要先转化为机器语言 C 指令系统是计算机软件 硬件的界面 D 指令系统和机器语言是无关的 2 在CPU执行指令的
  • 面向对象编程是什么意思呢?汇总

    https blog csdn net qq 32381815 article details 79119996 面向对象思想 谈谈你对面向对象的理解 https blog csdn net qsbbl article details 71
  • 【408】计算机学科专业基础 - 计算机组成原理

    一 计算机系统概述 复习提示 本章是组成原理的概述 考查时易针对有关概念或性能指标出选择题 也可能综合后续章节的内容出有关性能分析的综合题 掌握本章的基本概念 是学好后续章节的基础 部分知识点在初学时理解不深刻也无须担忧 相信随着后续章节的
  • 计算机组成原理——数制与编码

    1 在以下编码中 零的表示唯一的是 C A 反码 B 原码 C 补码 D 原码和移码 2 假设某数的真值为 100 1010B 在计算机内部表示为1011 0110B 该数采用的编码为 D A 移码 B 原码 C 反码 D 补码 3 考虑以

随机推荐

  • PyTorch基础练习-task5(PyTorch实现L1,L2正则化以及Dropout)

    PyTorch基础练习 task5 一 Dropout原理 二 用代码实现正则化 L1和L2 2 1 L1实现 2 2 L2实现 三 PyTorch中实现dropout 一 Dropout原理 在前向传播的时候 让某个神经元的激活值以一定的
  • android edittext 输入完成监听,EditText输入监听

    EditText输入监听 原创 6710766562015 05 13 13 34 38著作权 文章分类 android开发 阅读数 548 著作权归作者所有 来自51CTO博客作者671076656的原创作品 如需转载 请注明出处 否则将
  • 关于idea 生成war 包放入tomcat的路径访问问题

    目录 1 打包成war 2 关于war 和war exploded 3 在idea中使用tomcat启动 4 把war包放在指定的tomcat下启动 1 打包成war 点击右上角project structure或者左上角File proj
  • leetcode刷题(不邻接植花、电话号码的字母组合、统计共同度过的日子数、节点与其祖先之间的最大差值、分隔数组以得到最大和、二进制求和、x的平方根、最小偶倍数)

    目录 1 不邻接植花 2 电话号码的字母组合 3 统计共同度过的日子数 4 节点与其祖先之间的最大差值 5 分隔数组以得到最大和 6 二进制求和 7 x的平方根 8 最小偶倍数 1 不邻接植花 2 电话号码的字母组合 class Solut
  • LeetCode——二叉树

    二叉树 二叉树概念和性质 104 二叉树的的最大深度 递归 98 验证二叉搜索树 中序遍历 101 对称二叉树 代码比较精巧 不好理解 102 二叉树的层序遍历 中等 参考题解 自己码的代码 108 将有序数组转换为二叉搜索树 递归 剑指
  • 如何写好Java程序呢

    如何写出更好的Java代码 05 22 2014 Java是最流行的编程语言之一 但似乎并没有人喜欢使用它 好吧 实际上Java是一门还不错的编程语言 由于最近Java 8发布了 我决定来编辑一个如何能更好地使用Java的列表 这里面包括一
  • windows基本命令 --快速打开文件夹

    通过 cmd 命令行进入指定目录后如果想查看该目录下的文件需要输入 dir 命令 很不方便 我们可以在 cmd 下打开文件夹图形界面 explorer path 例子 1 打开当前目录 explorer 2 打开上级目录 explorer
  • RocketMQ占用内存过大的解决方法

    目录 一 问题描述 二 解决方法 1 runserver sh 修改 2 runbroker sh 修改 一 问题描述 RocketMQ 启动后 一下子把内存撑爆了 二 解决方法 修改启动参数 分别对 bin 目录下的 runserver
  • jenkins拉取项目提示 ‘parent.relativePath‘ points at wrong local POM

    环境说明 为一台无法连接外网的linux服务器 问题描述 安装了jenkins拉取项目 提示ERROR Failed to parse POMs org apache maven project ProjectBuildingExcepti
  • 【C++】卡常技巧

    1 若乘上一个2的倍数的数值 可改用左移运算符 例1 x x 2 或 x 2 改成 x x lt lt 1 或 x lt lt 1 log22 1 例2 x x 32 或 x 32 改成 x x lt lt 5 或 x lt lt 5 lo
  • 3DMAX渲染完卡住不动该怎么办?

    有很多种原因都可能会导致3DMAX卡死 需要一个一个排查 1 3DMAX和系统语言不兼容 可以把电脑语音设置兼容点上 2 3dmax内存分配不足 把动态内存限制设置到1W以上或是直接设置为0 无限制 3 软件运行错误 可以尝试重置下vray
  • 通信中间件 Fast DDS 基础概念简述与通信示例

    从事汽车软件开发 通信中间件绕不开 当前最火热的无非有 2 种 Some IP 和 DDS DDS 是一种分布式通信标准 有很多商业和开源的实现 Fast DDS 是其中的一种 它在 ROS2 中被应用 而 Apollo 中的 CyberR
  • 基于51单片机用DS1302和LCD1602设计可调式电子日历与时钟(Proteus仿真)

    嵌入式工程师成长日记 https mp weixin qq com s biz Mzg4Mzc3NDUxOQ mid 2247484111 idx 1 sn ce820ea78cf5ff4f00ebb282abc72143 chksm cf
  • Minio整合到springboot

    Minio整合到springboot 1 Minio 1 1 Minio介绍 MinIO 是一个基于Apache License v2 0开源协议的对象存储服务 它兼容亚马逊S3云存储服务接口 非 常适合于存储大容量非结构化的数据 例如图片
  • linux重启mysql

    linux重启mysql的方法 1 直接使用 service mysqld restart 或 service mysql restart 命令重启 2 使用 etc init d mysqld restart 命令重启 1 查看mysql
  • 超神战记不显示服务器,超神战记进不去 闪退及登陆不上解决方法

    超神战记手游进不去 超神战记无法连接服务器 超神战记手游登陆失败 超神战记手游进去就死机 更新失败 或更新之后进不去了 超神战记手游闪退是怎么回事 黑屏怎么回事 闪退怎么办 连接不上 超神战记手游与服务器连接失败 服务器连接异常 登陆不上
  • Machine Learning Yearning(开篇、1、2)

    Machine Learning Yearning 开篇 1 2 Machine Learning Yearning开篇12 开篇 目的 下载 章节名称 Chapter 1Why Machine Learning Strategy Chap
  • CV牛人牛事简介

    CV人物1 Jianbo Shi史建波毕业于UC Berkeley 导师是Jitendra Malik 其最有影响力的研究成果 图像分割 其于2000年在PAMI上多人合作发表 Noramlized cuts and image segme
  • C++学习博客

    网页 https blog csdn net kuweicai article details 82779648 https www cnblogs com inception6 lxc p 8686156 html https www c
  • 浮点数

    为什么要有浮点数 从十进制科学计数法理解浮点数 计算机中二进制的浮点数 二进制中阶码的底也可以不为2 例如 二进制中阶码的底可以为4 为8等等 当阶码的底为2 假设阶码为 1 则小数点需要后移一位 即算数左移一位 当阶码的底为4时 假设阶码