0.1 - x 的近似的十进制值是多少?

浮点运算的不精确性能够产生灾难性的后果。1991年2月25日,在第 一次海湾战争期间,沙特阿拉伯的达摩地区设置的美国爱国者导弹,拦截伊拉克的飞 毛腿导弹失败。 浮点运算的不精确性能够产生灾难性的后果。1991年2月25日,在第 一次海湾战争期间,沙特阿拉伯的达摩地区设置的美国爱国者导弹,拦截伊拉克的飞 毛腿导弹失败。飞毛腿导弹击中了美国的一个兵营,造成28名士兵死亡。美国总审 .计局(GAO)对失败原因做了详细的分析[76],并且确定底层的原因在于一个数字计 _算不精确。在这个练习中,你将重现总审计局分析的一部分。 爱国者导弹系统中含有一个内置的时钟,其实现类似一个计数器,每0.1秒就加1。为了以秒为单位来确定时间,程序将用一个24位的近似于1/10的二.. 阅读详情

0.1 - x 的近似的十进制值是多少?

这也是CSAPP中练习题2.46 的 第 2 小问。

0.1 在计算机中的表示 0.00011 0011[0011]…,对于 x,x 也是0.1在计算机中表示的二进制小数,只是这里只考虑这个序列的二进制小数点右边的前23位,即x =0.00011001100110011001100。

0.1 - x = 0.00000 00000 00000 00000 00011 0011[0011]…,也就是求这个数的十进制表示,那么这个数是多少呢?
书中答案给的是(2 ^ -20) * 1 / 10,刚开始不知道为什么是这样。
书中的答案里有这么一句话:“把这个(0.1 - x)与 0.1 的二进制进行比较“,进行比较,进行比较,看出来了没?0.1 - x 的二进制值就相当于把0.1那个数右移20位,所以就是 0.1 * (2 ^ -20).


刚开始我怎么想都想不明白,从哪儿冒出来个 1 / 10 啊,还乘以 2 ^ -20,先是百度,没找到,又去Google,还去Stackoverflow去search,最终决定在CoCode.cc上提问,可喜的是在我把问题一步步写好之后,仔细揣摩作者给的答案里的那句话,自己就想到了答案所在。当然问题就不用发啦。^_=
这再次体现了把问题描述清楚是多么地重要!还要多思考,多比较。

【竞赛】为啥用0x3f代表无穷大 以及memset用法简析 解释为啥用0x3f代表无穷大 以及memset用法简析 阅读详情

相关推荐

Mitchell近似算法在低功耗边缘AI芯片里的实战:误差1/9,但省了多少电?

本文探讨了Mitchell近似算法在低功耗边缘AI芯片中的应用,通过Verilog实现最大误差1/9的近似乘法器,实测功耗降低82%。文章详细介绍了算法优化技巧、与神经网络量化的协同优化及实际部署中的工程经验,为边缘AI设备的能效提升提供了实用方案。

weixin_33696822的博客 435

CSAPP笔记 第一章第二章

CSAPP笔记

zaizai1007的博客 2316

Python浮点算术:争议和限制_python中的小数取值都是近似表示,不能精确的表示小数。

因此,在今天的大部分架构上,浮点数都只能近似地使用二进制小数表示,对应分数的分子使用每 8 字节的前 53 位表示,分母则表示为 2 的幂次。虽然病态的情况确实存在,但对于大多数正常的浮点运算使用来说,你只需简单地将最终显示的结果舍入为你期望的十进制数值即可得到你期望的结果。同样的道理,无论你使用多少位以 2 为基数的数码,十进制的 0.1 都无法精确地表示为一个以 2 为基数的小数。这两个小数具有相同的值,唯一真正的区别是第一个是以 10 为基数的小数表示法,第二个则是 2 为基数。

2501_90255393的博客 603

深入理解计算机系统 (第二章家庭作业)

如题,家庭作业。记录个人的部分答案,由于时间关系,不会每题都做。 2.38:show_bytes() 直接参照书本里面的程序: #include #include typedef unsigned char *byte_pointer; void show_bytes(byte_pointer start, int len){ int i ;...

hqsmichael的博客 557

【人工智能的数学基础】二进制乘法的Mitchell近似

使用Mitchell近似构造加法神经网络.本文通过近似算法将乘法运算转变为加法运算,从而降低了神经网络中的乘法的运算量。

AI天才研究院 1万+

Jetson AGX Orin到手必看:DP线选错黑屏、SSD不识别?这篇避坑指南帮你一次搞定

本文详细介绍了Jetson AGX Orin开发套件的硬件避坑指南,涵盖开箱检查、DP线选择、SSD兼容性等关键问题。通过实测数据和实用技巧,帮助开发者避免黑屏、存储不识别等常见问题,提升开发效率。特别推荐符合VESA认证的DP 1.4a线缆和兼容性优秀的SSD型号,确保设备稳定运行。

weixin_33696822的博客 433

csapp习题

2.81 A 错误,寻找特殊情况,当x=0,y=tmin(-2^31)时,x>y,但-y依旧是tmin,并不会发生改变,-x>-y B 正确,整数左移5位相当于乘以32, C 错误, D 正确,这个等价于 (x-y)==-(y-x) 是永远成立的,无符号和有符号数的位级表示是相同的。 E 正确,最后一个bit清0,对于偶数是不变的,对于奇数相当于-1,而tmin是偶数,因此该减法不存在溢出情况。所以左边总是<=x。 ...

weixin_51779805的博客 901

群晖设置公网ipv6方式域名解析访问

群晖、IPV6、域名解析

爬山虎的博客 2万+

深入了解计算机系统作业答案,深入理解计算机系统习题答案.pdf

深入理解计算机系统习题答案.pdf (89页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!11.90 积分Computer Systems: A Programmer's PerspectiveInstructor's Solution Manual 1Randal E. BryantDavid R. O'HallaronDecember 4, 200...

weixin_30470785的博客 2711

Vivado IP核调参大师:高效配置RS编码器的避坑指南

本文深入解析Vivado中RS编码器IP核的高效配置方法,涵盖符号宽度选择、码长优化和AXI4-Stream接口控制等关键参数。重点指导如何避开常见陷阱,实现FPGA设计中的资源优化与性能平衡,提升RS编码在通信系统中的可靠性。

metaverse5vr的博客 221

【DRAM存储器五十六】LPDDR5介绍--WCK2CK Leveling和Read gate training

简述LPDDR5 WCK2CK leveling和read gate traning基本原理与操作步骤

highman110的博客 8787

计算机中0.1+0.2的结果是多少

并不是所有小数都可以用「完整」的二进制来表示的,比如十进制 0.1 在转换成二进制小数的时候,是一串无限循环的二进制数,计算机是无法表达无限循环的二进制数的,毕竟计算机的资源是有限。由于计算机的资源是有限的,所以是没办法用二进制精确的表示 0.1,只能用「近似值」来表示,就是在有限的精度情况下,最大化接近 0.1 的二进制数,于是就会造成精度缺失的情况。这种二进制小数是「定点数」形式,代表着小数点是定死的,不能移动,如果你移动了它的小数点,这个数就变了, 就不再是它原来的值了。

m0_63310537的博客 1016

破局KS滑块验证码:从参数加密到轨迹生成,Python逆向全流程避坑实录

快手滑块验证码破解实战:从逆向分析到自动化实现 摘要:本文详细记录了破解快手滑块验证码(KS滑块)的完整过程。通过48小时的逆向分析,揭示了KS滑块的双重校验机制:不仅需要精准定位滑块缺口位置,还需满足参数加密和轨迹特征校验。文章从反爬逻辑分析入手,介绍了工具选型与环境配置的避坑要点,重点讲解了滑块缺口距离计算方法和核心加密参数slide_sign的逆向过程。通过OpenCV边缘检测和Frida动态调试技术,成功实现了滑块验证的自动化,准确率提升至99%。文中附有Python实现代码和实际操作踩坑记录,为开

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1662

累加0.1不等于1.0,累加0.125却等于1.25?

​问题的根本原因在于浮点数的精度

jm999999999的博客 783

OpenClaw-遇到的问题- FailoverError: Model context window too small (4096 tokens). Minimum is 16000

摘要:OpenClaw配置文件中deepseek-reasoner模型的上下文窗口被默认设置为4096 tokens(实际支持128K),导致系统报错"Model context window too small"。解决方案是删除配置文件中的contextWindow和maxTokens字段,让系统自动获取模型真实能力,并重启OpenClaw服务。配置文件通常位于用户目录下的.openclaw/openclaw.json中。

直到世界的尽头 4157

姿态传感器/陀螺仪之LSM6DSLTR应用驱动程序设计

* LSM6DSLTR I2C地址(SA0=1) *//* 初始化LSM6DSLTR传感器(加速度计±2g,陀螺仪±250°/s) *//* 加速度计灵敏度 *//* 角速度值(°/s) *//* I2C句柄 *//* 陀螺仪灵敏度 *//* 加速度值(g) *//* 温度值(°C) *//* 设备地址 *//* IF_INC=1: 自动增量地址 *//* 10Hz采样率 *//* 配置I2C1引脚:PB6->SCL, PB7->SDA *//* 转换为实际温度值(°C),参考手册中温度计算公式 */

corlin6688的博客 394

基于Verilog的Mitchell近似算法

本文章基于1962年的论文《Computer Multiplication and Division Using Binary Logarithms》,作者是John N. Mitchell,该算法在二进制下,可以通过加法来近似两个数的乘法,最大误差不超过1/9。本文前文引用来自参考文献[1]。本文基于verilog实现了Mitchell近似算法,由于后续会对近似算法进行相关研究,而Mitchell近似是很多近似算法的基础,本文主要以实现算法逻辑为目的,体会其基本原理。

weixin_51116586的博客 1388

WordPress插件depicter存在SQL注入漏洞(CVE-2025-2011)

Depicter 是一款功能强大的 WordPress 幻灯片插件,允许用户通过直观的拖放编辑器轻松创建响应式滑块、轮播和动态内容展示。该插件提供丰富的模板库、动画效果和图层控制,支持多媒体内容嵌入(如图片、视频、HTML),并优化了移动端显示和SEO性能。其无代码操作界面适合非技术用户,同时提供高级自定义选项,适用于产品展示、营销推广和视觉叙事等多种场景,是提升网站视觉吸引力的高效工具。

m0_50125527的博客 550

[python] "0.3 == 3 * 0.1" 为False的原因

为什么在python中写下print(0.3 == 3 * 0.1)会输出False? 本篇文章告诉你答案。

Aven 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

JS中0.1+0.2!=0.3

现象: console.log(0.1+0.2);//0.30000000000000004 原因 1、存储原理 在计算机中数字无论是定点数还是浮点数都是以多位二进制的方式进行存储的。 在JS中数字采用的IEEE 754的双精度标准进行存储(存储一个数值所使用的二进制位数比较多,精度更准确) 2、示例 在定点数中,如果我们以8位二进制来存储数字。 对于整数来说,十进制的35会被存储为: 001...

shenzhou_yh的博客 1840

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

面试官:为什么 0.1 + 0.2 == 0.300000004 ?

我们在 JavaScript 里执行 0.1 + 0.2,会得到下面这个结果: 那今天,我们来思考几个问题: 为什么负数要用补码表示? 十进制小数怎么转成二进制? 计算机是怎么存小数的? 0.1 + 0.2 == 0.3 吗? … 别看这些问题都看似简单,但是其实还是有点东西的这些问题。 为什么负数要用补码表示? 十进制转换二进制的方法相信大家都熟能生巧了,如果你说你还不知道,我觉得你还是太谦虚,可能你只是忘记了,即使你真的忘记了,不怕,贴心的小林在和你一起回忆一下。 十进制数转二进制采用的是除 2

小林coding 3万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

0.1+0.2==0.3吗?

可能很多人都知道在程序中0.1+0.2!=0.3这个知识点,但是深究细问为什么的时候,可能会有点不太清楚,今天就来深挖一下为什么会有这种情况解答之前,我们先了解一点基础知识:答:十进制整数转二进制使用的是「除 2 取余法」,十进制小数使用的是「乘 2 取整法」。答:计算机是以浮点数的形式存储小数的,大多数计算机都是 IEEE 754 标准定义的浮点数格式,包含三个部分:符号位:表示数字是正数还是负数,为 0 表示正数,为 1 表示负数;指数位:指定了小数点在数据中的位置,指数可以是负数,也可以是正数,指数位

weixin_44045702的博客 821

0.1+0.2!=0.3的分析

在JS中进行数字运算时,会有一个叫做 数字运算中的精度缺失的问题。这篇文章,就带着大家了解下JS运算中精度的缺失问题。 现象 我们在js中进行如下运算时 console.log(0.1+0.2) // 结果0.30000000000000004 而不是0.3 1 可以看到0.1 + 0.2 != 0.3 原因 数...

kangzai的博客 841

c语言里字符的1加1等于多少,100个0.1相加等于多少

100个0.1相加等于多少?一、前言在大家的认知过程中可能会认为计算机是不会出现计算错误的,但是实际上,依然存在程序运行后无法得到正确数值的情况。其中,最经典的就是小数运算。二、引入在我们的世界里面,100个0.1相加就是10,这个是没有疑问的。但是让我们来看看计算机世界的计算结果:首先是一段计算代码:#include int main(void) {floatsum;inti;sum= 0;fo...

weixin_35300493的博客 3016

int、float与bool值与0比较

1、int型变量 n 与“零值”比较的 if 语句就是: if ( n == 0 ) if ( n != 0 ) 如下写法均属不良风格.。 if ( n ) // 会让人误解 n 是布尔变量 if ( !n ) 2、请写出 BOOL flag 与“零值”比较的 if 语句。 根据布尔类型的语义,零值为“假”(记为FALSE),任何非零值都是“真”(记为TRUE)。TRU...

qq_23350817的博客 3357

浮点数的近似保存与计算

由于计算机的资源是有限的,所以是没办法用二进制精确的表示 0.1,只能用「近似值」来表示,就是在有限的精度情况下,最大化接近 0.1 的二进制数,于是就会造成精度缺失的情况。上面所说的是可以用有限位二进制表示的十进制数,但是还有的数字是无法用有限位二进制来表达的,它们转换的过程中变成了无限循环的二进制。,这就非常不好了,毕竟加减法运算在计算机里是很常使用的,所以为了性能考虑,应该要尽量简化这个运算过程。,只不过尾数是有长度限制的,所以只会显示一部分,所以是一个近似值,精度十分有限。

ChenYX的博客 11万+
上一篇: Dev C++报告窗口不能自动弹出
下一篇: 1012.数字分类(20) PAT
T9257
博客等级 码龄11年 6粉丝 18原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值