首页 > 其他分享 >深入了解C语言中浮点数的存储方式

深入了解C语言中浮点数的存储方式

时间:2024-03-22 17:33:30浏览次数:23  
标签:表示 存储 浮点数 数据类型 整数 C语言 精度

因为这期可能对你们来说太简单了,所以我用一个字来概括吧

好了,结束了,我们下期再见喽,

不会有人真的走了吧,好了,砸门多的不说少的不闹好吧,直接上主食。

1.浮点数和整数在内存中存储的区别

浮点数和整数在内存中存储的区别主要体现在数据表示和存储方式上:

1. 数据类型:
   - 整数(int)是用来表示整数值的数据类型,通常以固定的位数来存储整数值。
   - 浮点数(float、double)是用来表示带有小数部分的数值的数据类型,一般采用浮点表示法存储。

2. 存储方式:
   - 整数通常以补码形式存储在内存中,使用固定长度的二进制表示整数值。
   - 浮点数采用IEEE 754标准定义的格式进行存储,包括符号位、指数位和尾数位,以实现对小数的表示和计算。

3. 精度:
   - 整数具有精确的表示,不会存在精度损失问题。
   - 浮点数由于采用二进制表示小数,可能存在精度损失,特别是在进行浮点数运算时。

4. 范围:
   - 整数的范围取决于其所占用的位数,比如一个32位整数的范围是从 -2^31 到 2^31-1。
   - 浮点数的范围和精度受到单精度(float)和双精度(double)表示的限制,一般可以表示较大或较小的数值,但是精度会随着数值大小的增加而减少。

总的来说,浮点数和整数在内存中存储的区别主要在于数据类型、存储方式、精度和范围上的不同。在编程中需要根据具体需求选择合适的数据类型,以确保数据的正确表示和计算。

2.浮点数具体在内存中存储的方式

浮点数在内存中的存储方式通常采用IEEE 754标准定义的格式。这个标准定义了单精度浮点数(float)和双精度浮点数(double)的表示方法,主要包括符号位、指数位和尾数位。

对于单精度浮点数(float),其在内存中的存储结构可以简单描述如下:

1. 符号位(1 bit):用来表示正负号,0 表示正数,1 表示负数。
2. 指数位(8 bits):用来表示指数部分,以二进制补码形式表示。
3. 尾数位(23 bits):用来表示尾数部分,包括小数点前面的整数部分和小数点后面的小数部分,以二进制形式表示。

双精度浮点数(double)的存储结构类似,但指数位和尾数位的长度分别为11 bits 和 52 bits。

根据IEEE 754标准,浮点数的存储方式使得计算机能够以近似的方式表示和处理实数,但也因此带来了一些浮点数精度上的限制和问题,比如舍入误差和表示范围。

需要注意的是,不同的硬件架构和编程语言可能会在细节上有所差异,但通常都会遵循IEEE 754标准来表示浮点数。

3.代码出手

如果还是觉得不是很理解的话,我们直接看代码吧。

其实这个作为了解就可以,没什么必要去展开学习的。

4.每期一问(上期答案)

上期的问题对于你们来说,撒撒水啦。

大端和小端是指在多字节数据类型(如整数)在存储时高字节和低字节的存放顺序。
它们的区别在于对多字节数据类型中各个字节的存放顺序不同。

1. 大端模式(Big Endian):
   - 在大端模式中,数据的高位字节(最高有效位)存放在低地址处,
   低位字节(最低有效位)存放在高地址处。


2. 小端模式(Little Endian):
   - 在小端模式中,数据的低位字节(最低有效位)存放在低地址处,
   高位字节(最高有效位)存放在高地址处。

当我们了解了这个之后就简单了,

那我们这期的每期一问就是:如何写出自己的atoi函数。

这期了解为主.

标签:表示,存储,浮点数,数据类型,整数,C语言,精度
From: https://blog.csdn.net/HH_KZ1314/article/details/136912086

相关文章

  • 整数和浮点数在内存中的存储
    整数和浮点数在内存中的存储整数在内存中的存储浮点数在内存中的存储整数在内存中的存储1.整数是以二进制的形式存储的,一个二进制位会占据一个比特位的空间。例如:#include<stdio.h>intmain(){ inta=10;//十进制的形式 //1010二进制形式 //一个整型是四......
  • pyhon字典值存储列表
    示例构建了一些域名作为字典键值对,将顶级域名下不同的二级域名添加到字典值存储列表importredata=["x.douyinvod.com","x.amemv.com","x.snssdk.com","x.douyincdn.com","x.douyinliving.com","x.huoshanlive.com"......
  • #include<初见C语言之指针(3)>
    目录一、字符指针变量二、数组指针变量1.什么是数组指针变量?2.数组指针怎么初始化?三、二组数组传参的本质四、函数指针变量1.什么是函数指针变量?2.函数指针变量使用  3.有趣代码 3.1typedef关键字五、函数指针数组六、转移表总结一、字符指针变量字符指针......
  • C语言中,四则运算导致数据类型的转换
    在C语言中,四则运算可能导致数据类型的转换,这种转换称为隐式类型转换。以下是一些常见的数据类型转换情况:1.整数提升:当不同大小的整数类型(如`char`、`short`、`int`、`long`)进行混合运算时,较小的操作数会被提升为较大的类型,以便进行运算。例如,`char`类型的操作数会被提升为`......
  • C语言-教案04(从小白到劝退之运算符)
    算术运算符运算符功能说明举例+加法,一目取正a+b-减法,一目取负a-b*乘法a*b/除法a/b%取模(求余)a%b++自加1a++,++b--自减1a--,--b关注点:减号也是负号,比如-a是取变量a的相反数。取模运算要求左右两边操作数必须是整型数据......
  • JavaScript 本地存储
    1.前言由来:localStorage和sessionStorage是HTML5标准中新加入的技术,用于保存整个网站的数据两者区别:localStorage的生命周期是永久的,除非手动删除,而sessionStorage仅在当前会话下有效(即使是同个域名下的网页也无法访问当前会话下创建的键值对,关闭页面或浏览器后被清除,刷新当......
  • 【测试开发学习历程】MySQL增删改操作 + 备份与还原 + 索引、视图、存储过程
    前言:SQL内容的连载,到这里就是最后一期啦!如果有小伙伴要其他内容的话,我会追加内容的。(前提是我有学过,或者能学会)接下来,我们就要开始python内容的学习了~~ 目录1 MySQL增删改操作1.1数据添加操作1.1.1插入完整的行1.1.2插入多行1.2数据更新操作1.3数据删除操......
  • 《C语言深度剖析》---------关键字(1)
    1.双击实质--->加载内存windows系统里面,双击的本质就是运行程序,把程序加载到内存里面;任何程序运行的时候都必须加载到内存里面;程序没有运行之前在硬盘里面,为什么程序运行之前必须加载到内存里面呢?这个时候就有必要了解一下冯诺依曼体系结构:我们输入的数据要到内存里面,经......
  • C语言内存函数之 memcpy和memmove函数
    memcpy函数的记忆方法:mem表示内存类函数,属于头文件string.h里面的函数。cpy是copy的缩写,表示对内存数据进行拷贝。memcpy函数的输入值和返回值:void* my_memcpy(void*brr,void*arr,size_tv) memcpy的输入值分别是被拷贝数据的brr的无类型数组的首地址,然后是拷贝给别人的无......
  • 【C语言】格式化输入/输出
    C语言格式化输入、输出简介使用printf函数格式化输出整数转换说明符浮点数转换说明符字符串转换说明符其他转换说明符字段宽度和精度控制标志转义符使用scanf函数格式化输入扫描设置(scanset)scanf函数的问题简介Streamsprovidecommunication......