csapp2.4节——浮点数

目录

二进制小数

十进制小数转二进制小数

IEEE浮点表示

规格化表示

非规格化表示

特殊值

舍入

浮点运算


二进制小数

类比十进制中的小数,可定义出二进制小数

例如1010.0101

小数点后的权重从-1开始递减。

十进制小数转二进制小数

整数部分使用辗转相除,小数部分按照如下方法

乘2取整,顺序排列。

例如把0.8125转化为二进制小数

0.8125\times 2=1.625......取整得1,小数部分乘2

0.625\times 2=1.25......取整得1

0.25\times 2=0.5......取整得0

0.5\times 2=1.0......取整得1

故二进制小数表示为0.1101

IEEE浮点表示

该标准类似十进制的科学计数法来表示一个小数

V = (-1)^s\times M\times 2^E

s是符号位,对于数值0的符号位解释为特殊情况

M是尾数,1\leqslant M< 20\leqslant M< 1

阶码,E的作用是加权

将浮点数的位表示划分为这三部分,

一个单独的符号位s直接编码s,

k位阶码字段exp表示E

n位编码尾数frac是M

C语言中float阶码为8位,尾数23位;double阶码为11位,尾数52位。

编码分为三种

规格化表示

当阶码的位非全0也非全1时

对于k位阶码表示,E = e-Bias,e是k位无符号数,Bias是偏移量,大小为2^{k-1}-1

对于n位小数字段,在规格化表示下,只存储了小数点右边的值,在计算最终值时再加上1,因为左边的值恒为1,这样可多一位精度。

非规格化表示

当阶码的位为全0时

对于k位阶码表示,E = e-Bias,在这e = 1,Bias是偏移量,大小为2^{k-1}-1

对于n位小数字段,只存储小数点右边的值,这时不会计算最终值时加1。

关于为什么e取1不取符合直觉的0,是为了在规格化表示的最小数和非规格化表示的最大数之间的平滑过渡。

下文将举例解释。

特殊值

阶码全1时,若n位小数字全0则表示正负无穷,否则表示NaN(Not a Number)。

下面举个例子来理解编码,例如十进制小数3.75,转化为二进制小数为11.11,我们要将它表示为一个float类型的数,也就是说有8位阶码,Bias=127,23位小数字段。

将其转为类似科学计数法的形式1.111\times 2^1

符号位s为0,E=e-Bias=1e=128,算出e的8位二进制表示为1000 0000,23位只存储小数点后的23位,为1100 0000 0000 0000 0000 000

现在举例说明非规格化表示e取1的问题,例如float能表示的最大非规格数是阶码全0,小数位全1,表示的二进制小数是0.1111 1111 1111 1111 1111 111 \times 2^{-126}

而最小的规格化表示是阶码最低位为1,阶码其余位为0,小数位为全0,则表示的二进制小数是

1.0\times 2^{-126}

可以看出这种变化是平滑的,主要原因:对于非规格化表示与规格化表示的阶码取1的情况,它们权重是相等的

舍入

IEEE浮点格式定义了四种舍入法,默认是向偶数舍入,向偶数舍入在非中间值时就是正常的四舍五入,对于有中间值的情况有特殊处理。

这是对十进制小数舍入到整数的例子,对于1.40和1.60比较好理解,对于1.5,采用向偶数舍入,也就是向要保留的最低有效位变成偶数的方向舍入。所以1.5舍入为2,2.5舍入为2,-1.5舍入为-2.

对于二进制的情况来说,难点在于判断是否是中间值。

如0.101011,要保留到小数点后四位,可一眼看出后面的数非中间值。

但对于0.101010,它若要舍入到小数点后四位,有两个方向,0.1010和0.1011,算出0.101010与这两个数的差的绝对值是相同的,说明四位后是中间值,这时采用向偶数舍入的策略,选择0.1010。

浮点运算

对于浮点数相加,例如1.10\times 2^21.11\times 2^{-1}相加,会先对齐小数点,将较低的位权的那个数位权提升,于本例就是把1.11\times 2^{-1}变成0.00111\times 2^2然后再把小数部分相加。

若相加后小数位数超出了能表示的范围会进行舍入。

可以看到相加中存在移位操作,这种移位操作就很可能造成精度丢失,对于一个大数与小数相加,更有可能造成无法容忍的误差或错误,(3.14+1e10)-1e10=03.14+(1e10-1e10)=3.14,对于第一个算式,3.14在相加时由于舍入会被丢失。

这个例子也能说明浮点加法不满足结合律,改变运算顺序就会改变运算结果。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/959591.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【2024年华为OD机试】 (A卷,200分)- 开放日活动、取出尽量少的球(JavaScriptJava PythonC/C++)

一、问题描述 题目描述 某部门开展Family Day开放日活动,其中有个从桶里取球的游戏,游戏规则如下: 有N个容量一样的小桶等距排开。每个小桶默认装了数量不等的小球,记录在数组 bucketBallNums 中。游戏开始时,要求所有桶的小球总数不能超过 SUM。如果小球总数超过 SUM,…

《安富莱嵌入式周报》第349期:VSCode正式支持Matlab调试,DIY录音室级麦克风,开源流体吊坠,物联网在军工领域的应用,Unicode字符压缩解压

周报汇总地址&#xff1a;嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 视频版&#xff1a; 《安富莱嵌入式周报》第349期&#xff1a;VSCode正式支持Matlab调试&#xff0c;DIY录音室级麦克风…

nacos(基于docker最详细安装)

1、什么是Spring Cloud Spring Cloud是一系列框架的集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发&#xff0c;如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等&#xff0c;都可以用Spring Boot的开发风格做到一键启动和部署。…

李沐vscode配置+github管理+FFmpeg视频搬运+百度API添加翻译字幕

终端输入nvidia-smi查看cuda版本 我的是12.5&#xff0c;在网上没有找到12.5的torch&#xff0c;就安装12.1的。torch&#xff0c;torchvision&#xff0c;torchaudio版本以及python版本要对应 参考&#xff1a;https://blog.csdn.net/FengHanI/article/details/135116114 创…

Java Web-Tomcat Servlet

Web服务器-Tomcat Web服务器简介 Web 服务器是一种软件程序&#xff0c;它主要用于在网络上接收和处理客户端&#xff08;如浏览器&#xff09;发送的 HTTP 请求&#xff0c;并返回相应的网页内容或数据。以下是关于 Web 服务器的详细介绍&#xff1a; 功能 接收请求&#…

An OpenGL Toolbox

3.An OpenGL Toolbox 声明&#xff1a;该代码来自&#xff1a;Computer Graphics Through OpenGL From Theory to Experiments&#xff0c;仅用作学习参考 3.1 Vertex Arrays and Their Drawing Commands 顶点数组及其绘制命令&#xff1a;将几何数据存储在一个位置&#xff0c…

GCC之编译(8)AR打包命令

GCC之(8)AR二进制打包命令 Author: Once Day Date: 2025年1月23日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 全系列文章请查看专栏: Linux实践记录_Once-Day的博客-C…

【miniconda】:langraph的windows构建

langraph需要python3.11 langraph强烈建议使用py3.11 默认是3.12 官方 下载仓库 下载老版本的python (后续发现新版miniconda也能安装老版本的python) 在这里

微信小程序中常见的 跳转方式 及其特点的表格总结(wx.navigateTo 适合需要返回上一页的场景)

文章目录 详细说明总结wx.navigateTo 的特点为什么 wx.navigateTo 最常用&#xff1f;其他跳转方式的使用频率总结 以下是微信小程序中常见的跳转方式及其特点的表格总结&#xff1a; 跳转方式API 方法特点适用场景wx.navigateTowx.navigateTo({ url: 路径 })保留当前页面&…

python3+TensorFlow 2.x(四)反向传播

目录 反向传播算法 反向传播算法基本步骤&#xff1a; 反向中的参数变化 总结 反向传播算法 反向传播算法&#xff08;Backpropagation&#xff09;是训练人工神经网络时使用的一个重要算法&#xff0c;它是通过计算梯度并优化神经网络的权重来最小化误差。反向传播算法的核…

深度学习 Pytorch 单层神经网络

神经网络是模仿人类大脑结构所构建的算法&#xff0c;在人脑里&#xff0c;我们有轴突连接神经元&#xff0c;在算法中&#xff0c;我们用圆表示神经元&#xff0c;用线表示神经元之间的连接&#xff0c;数据从神经网络的左侧输入&#xff0c;让神经元处理之后&#xff0c;从右…

使用vscode + Roo Code (prev. Roo Cline)+DeepSeek-R1使用一句话需求做了个实验

摘要 使用vscode、Roo Code和deepseek-reasoner进行了一个实验&#xff0c;尝试使用一句话需求来生成小红书封面图片。工具根据需求提供了详细的架构方案&#xff0c;包括技术栈选择、核心模块划分、目录结构建议等。然后&#xff0c;工具自动化地完成了开发和测试&#xff0c;…

微服务搭建----springboot接入Nacos2.x

springboot接入Nacos2.x nacos之前用的版本是1.0的&#xff0c;现在重新搭建一个2.0版本的&#xff0c;学如逆水行舟&#xff0c;不进则退&#xff0c;废话不多说&#xff0c;开搞 1、 nacos2.x搭建 1&#xff0c;首先第一步查询下项目之间的版本对照&#xff0c;不然后期会…

TDengine 与上海电气工业互联网平台完成兼容性认证

在工业数字化转型和智能化升级的浪潮中&#xff0c;企业对高效、可靠的数据管理解决方案的需求日益增长。特别是在风电智能运维、火电远程运维、机床售后服务等复杂多样的工业场景下&#xff0c;如何实现海量设备和时序数据的高效管理&#xff0c;已经成为推动行业升级的关键。…

“大模型横扫千军”背后的大数据挖掘--浅谈MapReduce

文章目录 O 背景知识1 数据挖掘2 邦费罗尼原则3 TF.IDF4 哈希函数5 分布式文件系统 一、MapReduce基本介绍1. Map 任务2. 按键分组3. Reduce 任务4. 节点失效处理5.小测验&#xff1a;在一个大型语料库上有100个map任务和若干reduce任务&#xff1a; 二、基于MapReduce的基本运…

25美赛ABCDEF题详细建模过程+可视化图表+参考论文+写作模版+数据预处理

详情见该链接&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;&#xff01; 25美国大学生数学建模如何准备&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;-CSDN博客文章浏览阅读791次&#xff0c;点赞13次&#xff0c;收藏7次。通过了解比赛基本…

Python:元组构造式和字典推导式

&#xff08;Python 元组构造式和字典推导式整理笔记&#xff09; 1. 元组构造式 1.1 创建元组 使用圆括号&#xff1a; tuple1 (1, 2.5, (three, four), [True, 5], False) print(tuple1) # 输出: (1, 2.5, (three, four), [True, 5], False) 省略圆括号&#xff1a; tup…

appium自动化环境搭建

一、appium介绍 appium介绍 appium是一个开源工具、支持跨平台、用于自动化ios、安卓手机和windows桌面平台上面的原生、移动web和混合应用&#xff0c;支持多种编程语言(python&#xff0c;java&#xff0c;Ruby&#xff0c;Javascript、PHP等) 原生应用和混合应用&#xf…

vue3组件el-table报错

传给table标签的data不是数组就会报错&#xff0c; 摁着商品管理代码找了半天也没发现哪里错了&#xff0c;而且关闭报错表格数据能正常显示&#xff0c; 。。。 最后发现我还有个订单管理页面&#xff0c;这里面的data初始化成ref( )了&#xff0c;把这个组件注释掉&#xf…

基于SpringBoot+WebSocket的前后端连接,并接入文心一言大模型API

前言&#xff1a; 本片博客只讲述了操作的大致流程&#xff0c;具体实现步骤并不标准&#xff0c;请以参考为准。 本文前提&#xff1a;熟悉使用webSocket 如果大家还不了解什么是WebSocket&#xff0c;可以参考我的这篇博客&#xff1a; rWebSocket 详解&#xff1a;全双工…