C语言浮点型的存储

news/2024/12/22 18:14:57/

3.14159 1e10可以写成1.0×10的10次方
1e5 表示 1.0×10的5次方

在这里插入图片描述

int main()
{int n = 9;//4bytefloat* pFloat = (float*)&n;//float 指针访问4的字节printf("n值为:%d", n);//9printf("*pFloat值为:%f\n", *pFloat);//,是以浮点数的视角去看的*pFloat = 9.0;printf("num的值位:%d\n", n);printf("*pFloat的值为:%f\n", *pFloat);return 0;//由上得出浮点数和整数在内存中存储是有所区别的return 0;
}

在这里插入图片描述

接下来探讨浮点数在内存中如何存储

在这里插入图片描述
s是0表示他是负数 s是1表示他是正数

5.5浮点数转换为二进制 101.1 后面是以的原因是后面是2的-1次方 等于2分之1
101.1转换为科学计数法 1.011*2^2
上面是二进制 如果是十进制向左移动两位是×10^2

1.011相当于可以理解为m

(-1)S*M*2E
(-1) ^ 01.0112^2

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


在这里插入图片描述
对于e是无符号整数的补充 float型 要加127 double型要加1023


在这里插入图片描述

float在内存中也是倒着存放的

指数e 怎么拿出来

分为三种情况

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

有了以上基础 再回看第一开始的那道题

int main()
{int n = 9;//4bytefloat* pFloat = (float*)&n;//float 指针访问4的字节printf("n值为:%d", n);//9printf("*pFloat值为:%f\n", *pFloat);*pFloat = 9.0;printf("num的值位:%d\n", n);printf("*pFloat的值为:%f\n", *pFloat);return 0;return 0;
}
int main()
{int n = 9;//4byte//00000000000000000000000000001001   9的二进制序列float* pFloat = (float*)&n;//float 指针访问4的字节printf("n值为:%d", n);//9printf("*pFloat值为:%f\n", *pFloat);//整形形式放进去 浮点数形式拿出来.%f打印  纸打印小数点后6位//0   00000000  00000000000000000001001  e为全0的情况 m位还原为0.xxx数字0.00000000000000000001001*2^-126  全0的时候e直接补0// s      e         m*pFloat = 9.0;printf("num的值位:%d\n", n);//以浮点数形式放进 所以要用到科学计数法//1001.0//1.001*2^3  小数点向左移动三位//E为3   需要加127//0 10000010 00100000000000000000000  //整数在内存中存的是二进制 补码   %d打印认为是有符号数  符号位0原反补相同  所以直接打印这个二进制序列printf("*pFloat的值为:%f\n", *pFloat);return 0;return 0;
}

http://www.ppmy.cn/news/4954.html

相关文章

DJ13-1 汇编语言程序设计-2

目录 一、数据定义伪指令 1. 格式 2. 操作数 3. 重复操作数 4. 变量的使用 5. 属性定义伪指令 LABEL 6. 表达式运算符 二、符号定义伪指令 伪指令 指示性语句中的伪操作命令,无论表示形式或其在语句中所处的位置都与 CPU 指令相似,因此也称为伪…

JVM之堆

堆的基本内容: Java堆(Java Heap)是虚拟机所管理的内存中最大的一块,Java堆是被所有线程共享的一块内存区域,在虚拟机启动时创建,此内存区域的唯一目的就是存放对象实例,Java 世界里“几乎”所…

Mycat(6):mycat简单配置

1 找到conf/schema.xml并备份 2 配置虚拟表table[在schema里面] 其中 sharding-by-intfile 为rule.xml中的规则 规则文件为conf文件夹中的partition-hash-int.txt 3 配置数据节点dataNode 现在数据库新建3个数据库,skywalking,skywalking1,s…

艾美捷利妥昔单抗Rituximab参数及应用

艾美捷利妥昔单抗Rituximab背景: 利妥昔单抗是一种针对CD20抗原的基因工程嵌合鼠/人单克隆IgG1κ抗体。利妥昔单抗的分子量约为145 kD。利妥昔单抗由哺乳动物细胞(中国仓鼠卵巢)产生。 艾美捷利妥昔单抗Rituximab基本参数: 中文…

Jenkins(2)— 配置webhooks触发器

1、项目配置 项目配置 >> 构建触发器 >> 选择Gitee webhook触发器 生成Gitee WebHook密码:46d678257c0399b105635bcb9722ea09 2、Gitee配置 Gitee项目 >> 管理 >> 配置WebHooks 注意: 由于我的jenkins是部署在本地的&#xff…

【MySQL】-索引以及树的常用数据结构分析

作者:学Java的冬瓜 博客主页:☀冬瓜的主页🌙 专栏:【MySQL】 分享:纵一苇之所如,凌万顷之茫然。——《赤壁赋》 主要内容:MySQL中索引的介绍、创建索引、使用索引;索引背后的数据结构…

Pandas提取数据的几种方式

文章目录前言Pandas读取数据的几种方式1. read_csv2. read_excel3. read_sql总结前言 快期末了,数据挖掘的大作业需要用到python的相关知识(这太难为我这个以前主学C的人了,不过没办法还是得学😂),下面是我…

集合的框架体系和Collection接口

1.集合的理解和好处 前面我们保存多个数据使用的是数组,那么数组有不足的地方,我们分析一下 1.1数组 1)长度开始时必须指定,而且一旦指定,不能更改 2)保存的必须为同一类型的元素 3)使用数组进行增加/删除元素的示例代码-比较麻烦…