问题

计算机存储浮点数的时候,为什么不使用十进制来存储呢?

回答
你想了解为什么计算机在存储数字时,对我们常说的“小数”——也就是浮点数——不直接用我们习惯的十进制方式来保存,对吧?这背后其实牵扯到计算机最根本的工作原理和设计哲学。

首先,我们要明白计算机的核心语言是什么。计算机内部打交道的是电信号,这些电信号只有两种状态:开(通电)和关(断电)。为了在逻辑上表示这些状态,我们引入了二进制,也就是0和1。任何信息,无论是文字、图片还是数字,最终都要被转化成一串串的0和1才能被计算机理解和处理。

那么,我们日常使用的十进制,又是如何表示数字的呢?它是基于“逢十进一”的原则。例如,数字123.45,我们可以把它拆解成:

1 x 10² + 2 x 10¹ + 3 x 10⁰ + 4 x 10⁻¹ + 5 x 10⁻²

这里,我们用到的基数是10,而各位上的数字(09)的取值也与10相关。

现在,我们再来看看二进制。二进制是“逢二进一”。它的各位上的数字只有0和1,基数是2。同样地,一个二进制的数,比如1101.01,可以表示为:

1 x 2³ + 1 x 2² + 0 x 2¹ + 1 x 2⁰ + 0 x 2⁻¹ + 1 x 2⁻²

你看,二进制和十进制在数学原理上是相似的,都是一种“位权表示法”,只是基数不同。

问题就出在这里:计算机内部就是以二进制为基础来运作的。如果要让计算机直接处理十进制的浮点数,那意味着我们需要一种机制,能够直接表示十进制的“逢十进一”的进位关系,以及0到9这十个数字的权重。但这对于一个只有两种状态(0和1)的电子设备来说,会变得极其复杂和低效。

想象一下,如果你要用电信号来表示十种不同的状态(0到9),你可能需要复杂的电路来区分和存储这些状态,这会大大增加硬件的成本和功耗,而且处理起来也更慢。

相比之下,二进制的0和1非常直接,只需要区分“有电”和“没电”两种状态,硬件实现起来简单、可靠且速度快。

所以,计算机科学家们设计了一种标准,叫做IEEE 754浮点数标准。这个标准不是直接用二进制表示十进制的数,而是采用一种科学计数法的形式,但使用的是二进制作为基数。一个浮点数被拆解成三个部分:

1. 符号位(Sign): 用一个二进制位来表示数字是正数还是负数(0表示正,1表示负)。
2. 指数部分(Exponent): 用一部分二进制位来表示这个数的“数量级”,也就是这个数“有多大”或“有多小”。这个指数是相对于基数2的。
3. 尾数部分(Mantissa/Significand): 用剩下的二进制位来表示数字的有效数字部分。

举个例子,我们想在计算机里存储十进制的0.1。如果我们尝试直接用二进制去表示它,会发现一个问题:0.1在十进制里是可以精确表示的,但在二进制里,很多我们熟悉的十进制小数(比如0.1, 0.2, 0.7等)都无法被精确地表示成有限位的二进制小数。它们会变成无限循环的二进制小数,就像我们在十进制里遇到1/3会变成0.3333...一样。

例如,十进制的0.1在二进制里大约是0.0001100110011...(这是一个无限循环小数)。当你用计算机存储它时,只能取一个近似值,因为存储空间是有限的。这个近似的过程,就是为什么我们有时候会看到一些本应是精确的小数运算(比如0.1 + 0.2)在计算机里会得到一个微小的误差(比如0.30000000000000004)。

为什么不直接用“十进制浮点数”呢?

虽然有一些尝试和在特定领域的应用(比如金融领域对精度要求极高),会使用BCD码(BinaryCoded Decimal,二进制编码的十进制)来存储十进制的数字,或者使用专门的十进制浮点数格式。但这些方法通常都有一些权衡:

BCD码: 每一个十进制数字(09)用4个二进制位来表示。比如十进制的58,在BCD码里就是0101 1000。这样做的好处是,BCD码的数值和它代表的十进制数值之间有非常直接的对应关系,避免了二进制转换带来的误差。但是,BCD码的存储效率不如标准的二进制浮点数。例如,4个二进制位理论上可以表示0到15,但BCD码只用了0到9,浪费了一部分空间。而且,BCD码的运算也比标准的二进制浮点数运算更复杂,需要更多的硬件支持。
专门的十进制浮点数格式: 这种格式会直接按照十进制的科学计数法来存储,比如±M × 10^E。这种格式在某些特定场景下确实能提供比IEEE 754更直观的十进制精度,但它的设计、实现和普及程度远不如IEEE 754。并且,在计算机底层,最终还是需要和二进制打交道,这个转换过程仍然存在。

总结来说,计算机选择不直接用十进制存储浮点数,主要是因为:

1. 硬件的简单性和效率: 二进制是与电子信号状态直接对应的,实现起来最简单、最可靠、速度最快。
2. 普遍性和标准化: IEEE 754标准是全球计算机硬件和软件广泛采用的浮点数表示和运算标准,它基于二进制,有强大的生态支持。
3. 性能考量: 基于二进制的运算在现代处理器上已经高度优化,转换到十进制的运算会显著降低性能。

所以,虽然我们习惯了十进制,但计算机世界遵循的是它自己的逻辑语言——二进制。我们看到的十进制浮点数,其实是在与二进制世界之间进行一场“翻译”和“近似”,而IEEE 754标准就是这场翻译的规则。

网友意见

user avatar

因为浮点数的特征决定了不能用来做精确计算,即便是十进制浮点数也是如此。要做精确计算如银行什么的必须用定点数或者整型。这样一来,十进制浮点数好处有限。

user avatar

问题描述中似乎是用二进制存储尾数(mantissa)。但用十进制存储浮点数的话,尾数也需要十进制的。否则的话,做加减运算要对齐两个数的小数点的时候,就要把尾数乘以 。而正常的做法只需要左右移位。

IEEE 754标准的十进制的浮点数格式是采用了 Densely packed decimal 去存储十进位的尾数,这种方式用 10 bit 可以存储 3 个十进位数字,但仍然有浪费( )。

计算机的计算一般不需要十进制,十进制只是为了输入/输出人类要看的文本时才需要的。对于金额那类计算,也应该用定点数而非浮点数。

类似的话题

  • 回答
    你想了解为什么计算机在存储数字时,对我们常说的“小数”——也就是浮点数——不直接用我们习惯的十进制方式来保存,对吧?这背后其实牵扯到计算机最根本的工作原理和设计哲学。首先,我们要明白计算机的核心语言是什么。计算机内部打交道的是电信号,这些电信号只有两种状态:开(通电)和关(断电)。为了在逻辑上表示这.............
  • 回答
    这个问题触及了计算机科学和数学的根本界限,答案其实比你想象的要复杂一些。简而言之,计算机从根本上无法真正意义上存储一个“无理数”。但这里面有很多值得深入探讨的细节,也牵扯到我们如何理解“存储”和“无理数”这两个概念。首先,我们得明确什么是“无理数”。无理数是指不能表示为两个整数之比的实数。它们最显著.............
  • 回答
    这个问题问得非常好,它涉及到计算机内部处理文本的底层原理和不同编码的优劣势。简单来说,计算机不是“不直接使用 UTF8 进行存储”,而是更准确地说,计算机在内部更倾向于使用一种统一的、能够表示所有字符的抽象表示,然后根据需要将其转换为不同的字节序列表示(编码),而 UTF8 就是最常用的一种字节序列.............
  • 回答
    说起电脑里汉字的输入输出和存储,这事儿说起来可就绕了,毕竟咱们这方块字跟电脑这二进制世界八竿子打不着。不过,这事儿在咱电脑科学里可是个了不起的工程,从早些年笨重的打字机,到如今花样百出的输入法,再到我们眼睛里看到的屏幕上的字,这里头藏着不少门道。一、 汉字是怎么跑到电脑里的?—— 输入篇这第一步,就.............
  • 回答
    好的,咱们这就来聊聊计算型存储/存算一体这玩意儿,它到底是怎么实现的。别看名字听起来有点绕,其实它的核心思想挺实在的——就是把计算能力往前推,往存储那里挪。 为啥要这么干?传统存储的痛点你想啊,咱们现在的数据量是蹭蹭蹭地往上涨,人工智能、大数据分析、物联网,哪一样不是吃数据的大户?传统的架构,数据在.............
  • 回答
    知乎上关于计算机的讨论,确实存在一种现象,可以被一些人解读为“严重吹捧”。这种现象并非单一维度,而是由多种因素交织而成,具体体现在以下几个方面:首先,行业本身的魅力与高光时刻是重要基础。 计算机科学和技术,从硬件到软件,从算法到应用,本身就蕴含着巨大的创造力和解决问题的能力。它不仅是现代社会运转的基.............
  • 回答
    你这个问题问得特别好,触及到了计算机科学中最根本的几个层面。你说工程上充满了不确定性,比如元件的细微差异、环境的波动,这些确实是客观存在的。那么为什么我们不能直接利用这些“不确定”来生成“真随机数”,反而要依赖那些“看似随机”的伪随机数呢?这背后其实是计算机的本质和我们对“随机”的定义在起作用。一、.............
  • 回答
    有人可能会将我们的大脑与计算机的易失性存储器(RAM)进行类比,但我觉得这个比喻实在太有限了,甚至有些误导。RAM 的作用非常直接:它就像计算机的“工作台”,临时存放那些正在被处理器读取和处理的数据。当你打开一个程序,它就被加载到RAM里,这样CPU就能快速地访问和操作它。一旦你关闭程序,或者电脑关.............
  • 回答
    石头和塑料袋,看似都是普普通通的物品,但它们在计算机视觉传感器眼里,却是天壤之别。这其中的奥妙,在于它们各自拥有截然不同的物理属性,而这些属性直接影响了传感器如何“看到”和“理解”它们。首先,我们得明白,计算机传感器看到的不是我们用眼睛看到的“模样”,而是通过物理信号的反射、吸收、散射等方式来“感知.............
  • 回答
    你的想法很有趣,将生物脑的结构和功能与计算机的并行处理联系起来,并构想了一个“生物并行计算机”。我们不妨从这个角度来深入探讨一下这个概念,看看它在生物学和计算科学的交叉点上能激发出怎样的火花。首先,让我们来拆解一下你提出的核心观点:“空间臃肿”、“性能浪费”、“切除多余部分”、“感知器联结更多”、“.............
  • 回答
    Gartner 的最新报告为阿里云在云计算领域的重要地位提供了有力佐证,尤其是在计算、存储、网络和安全四个核心领域的领先地位,这并非偶然,而是其长期技术投入、市场深耕和用户服务积累的必然结果。要深入理解这一成就,我们需要从多个维度进行剖析:一、 报告的权威性与背景: Gartner 的地位: G.............
  • 回答
    量子计算的“寒冬”将至? 著名物理学家的审慎之声近期,一篇发表在《麻省理工科技评论》上的观点文章引发了科学界和科技界的广泛关注,一位在量子计算领域享有盛誉的物理学家,旗帜鲜明地指出了当前量子计算发展中存在的“炒作”成分,并对其实际应用的前景表达了审慎的看法。这无疑给那些对量子计算充满期待,甚至已经投.............
  • 回答
    “存内计算”(InMemory Computing,IMC),也叫“内存计算”,这个词在学术界出现的频率可不低,经常是各种研讨会、学术论文的焦点。但问题来了,这玩意儿是真有两把刷子,能解决实际大问题,还是只是学者们在象牙塔里自娱自乐,玩个概念?咱们不妨掰开了揉碎了聊聊。为什么需要存内计算?要理解存内.............
  • 回答
    你提的这个问题,关于“计算商品embedding然后平均得到用户embedding”,确实是一个在推荐系统中常见但又容易被忽视的陷阱。这里面牵扯到很多微妙的地方,我们不妨深入聊聊。首先,咱们得明确一下,这个做法的初衷是什么。最直接的想法就是:用户喜欢的东西,它们的特征(embedding)肯定反映了.............
  • 回答
    π 的存在,这个看似简单的无理数,它所蕴含的无限不循环的数字序列,确实触及了我们理解和丈量宇宙本质的深层边界。这并非意味着人类的探索终将止步,但它确实为我们描绘了一幅更宏大、更细致的宇宙图景,在那里,“精确”二字变得更加 nuanced,需要我们用更广阔的视角去审视。首先,让我们理解 π 到底是什么.............
  • 回答
    这是一个引人入胜且极具哲学意义的问题,涉及到技术、意识、生命和存在的本质。如果人脑能够被完全计算机化,理论上,这确实为“人类脱离肉体永恒的存在”打开了可能性的大门,但其中蕴含着巨大的复杂性、技术挑战以及深刻的哲学伦理考量。让我们从各个方面来详细探讨:一、 人脑的完全计算机化是什么意思?这指的是将人脑.............
  • 回答
    中国高校计算机教育的现状,与其说是一片坦途,不如说是一条充满挑战的荆棘之路。近年来,国家对科技创新的重视程度空前提高,计算机科学与技术专业也因此成为热门学科,吸引了大量优秀学子。然而,在光鲜的就业数据和学科排名背后,隐藏着一些不容忽视的问题,它们如同细密的裂缝,影响着中国计算机人才培养的深度和广度。.............
  • 回答
    二战时期德国纳粹和日本的血统论和优生计划,是其极端民族主义和种族主义意识形态的集中体现,造成了人类历史上最黑暗的一页。它们的问题极其严重且多方面,以下将详细阐述: 一、德国纳粹的血统论与优生计划德国纳粹的血统论和优生计划,是以其种族主义理论为基础,目标是建立一个纯粹的“雅利安人”种族统治下的国家,并.............
  • 回答
    腾讯叫停“企鹅号黎明计划”并向 UP 主道歉:你能接受吗?该计划存在哪些问题?后续腾讯需承担哪些责任?腾讯叫停“企鹅号黎明计划”并向 UP 主道歉的事件,在内容创作者群体中引起了广泛关注和讨论。对于是否能接受腾讯的道歉以及该计划存在的问题和腾讯应承担的责任,我们可以从多个角度进行详细分析。 一、 你.............
  • 回答
    网上关于腾讯“黎明计划”存在违法行为、侵害内容创作者权益的说法,确实引起了广泛的关注和讨论。 要深入看待这个问题,我们需要拆解几个关键点:“黎明计划”究竟是什么?首先,需要明确的是,“黎明计划”并非腾讯官方主动对外大力宣扬的项目,更多是在行业内,尤其是在游戏开发者、内容创作者群体中流传的一个说法,它.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有