【C/C++】浮点数在内存中的储存

c++ 浮点数的存储方式 阅读详情

零.导言

       浮点数在内存中的储存方式与整形在内存中的储存方式不同,其储存方式遵循IEEE 754标准,这也是当你使用%d打印浮点型数据会打印出奇怪的数据的根本原因。就让我们来看看浮点型数据是怎么储存的吧。


一.浮点数的存储格式

        浮点数的存储格式可以表示为:
        [ V = (-1)^S * M * 2^E ]

  • ( S ) 是符号位,0表示(-1)^0,即正数;同理,1表示(-1)^1,即负数。
  • ( M ) 是有效数字,由于范围在1到2之间,第一位恒为1,因此在存储时不保存第一位。
  • ( E ) 是指数,表示浮点数的大小。其中32位浮点数的指数范围是0到255,64位浮点数的指数范围是0到2047‌

二.符号位

        ( S ) 是符号位,位于内存中的第一位,占1bit,就只有0或1两种形式,0表示正数;1表示负数。


三.有效数字

        ( M ) 是有效数字,位于内存中的最后一部分,占23bit/54bit,存储时不保存第一位,假如下图为有效数字部分的前八位:

 10100000

        它表示的其实是二进制的1.101(暂时不考虑指数部分),这八个数字数只是"1."后的小数部分而已。


四.指数

        ( E ) 是指数,紧挨符号位后面,位于2~9或2~12位,占8或11bit,有特色的计算机制:

        存储时需要将E的真实值加上一个中间值,32位浮点数的中间值是127,64位浮点数的中间值是1023‌,就拿32位浮点数来举例:

比如:10000000 其实表示的是 
10000000 = 00000001 + 01111111 = 00000001 + 127(十进制) 

        所以 10000000 表示的其实是 10^1 ,即十的一次方。


完

C++浮点数存储方式 C++中的,也被称为。 阅读详情

相关推荐

C++浮点型变量的存储方式

1 浮点类型简介 浮点型是C++定义的基本类型。类型float、double和long double分别表示单精度浮点数、双精度浮点数和扩展精度浮点数。在Visual Studio中,float类型用4个字节表示,double和long double用8个字节表示。 默认的浮点字面值常量为double类型。在数值的后面加上F或者f表示单精度,在数值后面加上L或者l表示扩展精度。 fl...

hou09tian的博客 4754

C/C++中浮点数的存储方式

原文地址:**C/C++中浮点数的存储方式 作者:andyhzw 根据国际标准IEEE 754,任意一个二进制浮点数V可以表示成下面的形式:   V = (-1)^s×M×2^E   (1)(-1)^s表示符号位,当s=0,V为正数;当s=1,V为负数。   (2)M表示有效数字,大于等于1,小于2。   (3)2^E表示指数位。 IEEE关于浮点数

梦的领域 1056

Java使用easyExcel生成excel文件直接写入邮件附件并发送

1.引入pom依赖 <!-- email --> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version> </dependency> <!-- easyexcel需要依赖poi jar包 --> <depe

weixin_50493320的博客 3909

23. C++ 浮点型的原理介绍及在内存中的存储形式

浮点数属于不精确的数据类型,本文将通过float类型的原理和在内存中的存储形式来介绍浮点型不精确的原因。以float类型为例,来展示C语言中浮点型的神秘之处。

谢谢大家的关注 2000

Mplus—交叉滞后面板模型(Cross-Lagged Panel Model, CLPM)

本文介绍交叉滞后模型相关知识,以及显变量模型与潜变量模型在Mplus中的语法。

m0_54401011的博客 1万+

告别调试烦恼:用Lattice Diamond手把手教你JTAG烧录FPGA(附SRAM/Flash模式详解)

本文详细介绍了使用Lattice Diamond软件进行JTAG烧录FPGA的全流程,包括SRAM临时调试和Flash固化的核心区别。从环境准备、硬件连接到文件准备、烧录模式选择,再到典型问题排查和高级技巧,手把手教你快速掌握FPGA烧录技术,提升开发效率。

weixin_42569329的博客 495

C/C++整数和浮点数在内存中存储

IEEE 754 规定,在计算机内部保存M时,默认这个数的第⼀位总是1,因此可以被舍去,只保存后⾯的 xxxxxx部分。但是,我 们知道,科学计数法中的E是可以出现负数的,所以IEEE 754规定,存⼊内存时E的真实值必须再加上 ⼀个中间数,对于8位的E,这个中间数是127;整数的2进制表⽰⽅法有三种,即 原码、反码和补码 三种表⽰⽅法均有符号位和数值位两部分,符号位都是⽤0表⽰“正”,⽤1表⽰“负”,⽽数值位最 ⾼位的⼀位是被当做符号位,剩余的都是数值位。⼀个中间数,对于8位的E,这个中间数是127;

westdjjdjdk的博客 1017

光学设计进阶:Zemax中的坐标断点与离轴系统优化

本文深入解析了Zemax中坐标断点的核心原理与实战应用,它是实现离轴光学系统设计的关键。文章通过比喻和实例,详细阐述了如何利用坐标断点作为“方向盘”来精确控制光学元件的偏心和倾斜,实现“前断后接”的局部坐标系变换,从而构建并优化无中心遮拦的离轴反射系统,避免光线失控。

3a9bq4r8t2y的博客 525

c/c++整数和浮点数在内存中存储

通过举例char和int来讲解整型和字符型内存的储存方式。通过对float的研究来讲解float和double关于浮点数的存储。

2301_80772499的博客 1262

模拟ic入门——设计一个单极运放(一)单级运算放大器设计基础

主要介绍了单级运放的基本理论和使用场景

qq_64956710的博客 3738

第二十一篇: `man`, `tldr`, `explain` - 授人以渔的“终极指令”

我们已经一起学习了19个(组)关键命令,从nvidia-smi到kubectl。但这只是GPU运维武器库中的一小部分。技术日新月异,新的工具、新的参数会不断涌现。这个系列的真正目的,不仅是教会你使用这19件“兵器”,更是希望你掌握学习任何一件新兵器的方法论。这套方法论就是你的“终极指令”。授人以鱼不如授人以渔。至此,《GPU运维指令集:20个关键命令的战地手册》系列已全部完结。我们从nvidia-smi出发,一路探索了监控、诊断、容器、集群、网络、性能等各个维度的命令,最后用自动化脚本将它们串联,又用。

weixin_42587823的博客 1350

C/C++浮点数在内存中的存储方式(转)

本文转自:https://www.cnblogs.com/dolphin0520/archive/2011/10/02/2198280.html                                                             C/C++浮点数在内存中的存储方式        任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二...

Primeprime的专栏 427

TC3XX - MCAL知识点(一):新建Tc3xx EB-tresos工程

基于EB-tresos建立Hightec或者Tasking工程的时候,第一个步骤就是需要新建一个EB-tresos的工程,本文记录一下如何新建一个EB-tresos工程,以及对其进行简单的操作。那么Tc3xx的MCAL包含哪些内容呢?

梦想技术家 2968

C/C++浮点数在内存中的存储方式

C/C++浮点数在内存中的存储方式       任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100。则在Intel CPU架构的系统中,存放方式为  10000100(低地址单元) 00000100(高地址单元),因为Intel CPU的架构是小端模式。但是对于浮点数在内存是如何存储的?目前所有的C/C++编译器都是采用...

ssinian的博客 224

ABAP CURR Data Type 深度解析与实战案例

CURR 数据类型是 SAP ABAP 中为处理货币金额而设计的一种特殊数据类型。CURR 数据类型能够自动根据关联的货币代码字段(例如 WAERS)确定小数位数,从而保证金额数据的精度与正确性。CURR 类型通常在 SAP 数据字典中使用,常见于各类业务数据表中,如会计凭证、销售订单等场景中,用于存储货币金额。CURR 数据类型底层实现上类似于 DEC 数据类型,但其特别之处在于与货币代码字段的绑定,这使得金额的格式化和显示可以自动匹配相应的货币规则。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 876

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

浅谈C/C++的浮点数在内存中的存储方式

原文地址:                                                            C/C++浮点数在内存中的存储方式        任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100。则在Intel CPU架构的系统中,存放方式为  10000100(低地址单元) 00

coobj2008的专栏 561

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C/C++>内存管理,内存区域划分,数据的储存处理,内置数据的储存,大/小端模式(储存),判断大/端模式

C/C++>内存管理,内存区域划分,数据的储存处理,C++动态内存管理方式,定位new表达式,malloc/free与new/delete的对比,内置数据的储存,大/小端模式(储存),判断大/端模式

qq_42069216的博客 418

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

浅谈C/C++浮点数在内存中的存储方式

C/C++浮点数在内存中的存储方式 任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100。则在Intel CPU架构的系统中,存放方式为 10000100(低地址单元) 00000100(高地址单元),因为Intel CPU的架构是小端模式。但是对于浮点数在内存是如何存储的?目前所有的C/C++编译器都是采用IEEE所制定的标准浮点格式,即二进制科学表示法。 在二进制科学表示法中,S=M*2^N 主要由三部分构成:符号位+阶码(N

weixin_46048542的博客 353

求 float数据在内存中的存储方法 的 java PHP C/C++ 程序

可以看我这个日志将计算方法的http://www.cnblogs.com/shangbolei/p/4441946.html 用PHP写的 function float_bin($shang) { //保留6位小数的浮点型 保留更多位的更改 $x = decbin($shang * 64 ); //把小数位换成整数 $y = $x /1000000 ;...

ab11339的博客 162

深度学习数据在内存中的存储(C/C++)

数据在内存中的存储(C/C++) *数据类型分类 1.整形 short //------------------------短整型(2 byte) unsigned short [int] // 无符号位 signed short [int] //有符号位· int //---------------------------整形(4 byte) unsigned int signed int long //------------------------长整型(8 byte) unsigned

Java学习小书屋 1750

C语言之数据的储存

目录 数据类型的介绍 类型的意义: 类型的基本归类 整形家族 浮点数家族 构造类型——自定义类型 指针类型 空类型 整形在内存中的存储 原码反码与补码 补码思想 大端小端字节序 浮点型在内存中的存储 浮点数表示形式 举例说明: IEEE 754规定浮点数存储方式 对于有效数字M规定 对于指数E规定 从内存中取出 经典案例 数据类型的介绍 char:字符数据类型——1字节 short:短整型——2字节 int:整形——4字节 long:长整型——4字节 .

m0_60027772的博客 1536

c/c++ float储存

在C++中float数据类型是采用科学计数法来表示的,就像下面这样:   其中S位符号位,占一位的二进制数,1为正,0为负,T为底数,按二进制数存储,占23位,E为指数部分,占8位。结构如下:   float 在内存中是按逆字节的存储的: 其中尾数是这样的形式:1.T1T2T3...T23。转换为十进制的数:   因为指数可以是负数,c++指数部分按原来的指数加上

zhengfushijie的专栏 1084

C/C++浮点数在内存中的存储方式《转》

那天有人在汇编群里有人问了一个 #include <iostream>#include <stdio.h>using namespace std; int main(){ int a; a = 3; printf("%lf\n",a); return 0;} 为什么输出0的问题。而且最近计算机组成原理里面有过对浮点型储存的讲解,所以这里就查了...

weixin_30835649的博客 111
上一篇: 【C/C++】strncpy函数的模拟实现
下一篇: 【C/C++】文件FILE相关函数(1)
bitenum
博客等级 码龄2年 331粉丝 45原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值