C语言基础知识:数据在内存中的存储解析(整数,浮点数)

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介: C语言基础知识:数据在内存中的存储解析(整数,浮点数)

和黛玉学编程..............>


整数在内存的存储

 之前就说过,数字二进制有3种保存方法,原码,反码,补码;而电脑存储整数的时候使用补码,这是因为cpu中只有加法器

 三种表示方法都有符号位和数字位,也就是signed 和unsigned ,有符号位就是正负区别啦

1.正数的原码,反码,补码都相同的

2.负数原码:按照二进制表示的

         反码:符号位不变,其他按位取反

        补码:反码基础上加一

大小端字节序和字节序判断

 

大小端

超过一个字节的数据在内存中存储的时候就有存储顺序的问题,按照不同的存储顺序我们分为大端字节和小端字节

大端存储模式:数据的低位字节内容保存在内存的高地址,高位字节内容保存在内存的低地址

小端存储模式:和上面相反

为什么要有这个大小端呢?

 在计算机系统中,我们是以字节为单位的,每个地址单元对应着一个字节,一个字节有8个比特位,但是在C语言中有8比特的char,还有16比特的short以及32比特的Long类型(一些编译器), 对于16或者32位的处理器,必然存在一个如何将多个字节安排的问题

 

浮点数在内存中的存储

举例:5.0,二进制是101.0,相当于1.01x2^2,S=0;M=1.01;E=2

        5.5,二进制是101.1,因为0.5是1x2^-1,表示的话就是(-1)^0 *1.011*2^2

但是总有些数字可能需要100位1000位才能表示出来,所以有些数字存储的时候与实际的有 误差

浮点数存的过程

M:前面说过,M是1到2之间的,所以M可以写成1.xxxxxx,其中xxxxx表示小数部分,所以在计算机内部保存的时候,默认第一位总是1 ,因此可以被舍去,只保存后面的部分,这样子可以节省一位有效数字,存储的范围也就大了。

E:

如果E为8位,它的取值范围为0~255;如果E为11位,它的取值范围为0~2047。但是,我

们知道,科学计数法中的E是可以出现负数的,所以IEEE 754规定,存⼊内存时E的真实值必须再加上⼀个中间数,对于8位的E,这个中间数是127;对于11位的E,这个中间数是1023。⽐如,2^10的E是10,所以保存成32位浮点数时,必须保存成10+127=137,即10001001

在内存中分为三种情况

1.E不全为0或者不全为1:

           指数E的计算值减去127(或者1023),得到真实值,再将有效数字M前加上第一                位的1

2.E全为0;

           浮点数的指数E等于1-127(或者1-1023)即为真实值,有效数字M不再加上第⼀位        的 1,⽽是还原为0.xxxxxx的⼩数。这样做是为了表⽰±0,以及接近于0的很⼩的数字。  

3.E全为1:

         如果有效数字M全为0,表⽰±⽆穷⼤(正负取决于符号位s

 

 

相关代码你们可以自己试试呀

#include <stdio.h>
int main()
{
int n = 9;
float *pFloat = (float *)&n;
printf("n的值为:%d\n",n);
printf("*pFloat的值为:%f\n",*pFloat);
*pFloat = 9.0;
printf("num的值为:%d\n",n);
printf("*pFloat的值为:%f\n",*pFloat);
return 0;
}

就到这里啦,如果对你有帮助,看希望可以收到你的小赞,你的赞将给创作者的我带来好多天的开心喲。

 


相关文章
|
2天前
|
JSON 监控 网络协议
Bilibili直播信息流:连接方法与数据解析
本文详细介绍了自行实现B站直播WebSocket连接的完整流程。解析了基于WebSocket的应用层协议结构,涵盖认证包构建、心跳机制维护及数据包解析步骤,为开发者定制直播数据监控提供了完整技术方案。
|
7天前
|
存储 缓存 监控
如何高效爬取天猫商品数据?官方API与非官方接口全解析
本文介绍两种天猫商品数据爬取方案:官方API和非官方接口。官方API合法合规,适合企业长期使用,需申请企业资质;非官方接口适合快速验证需求,但需应对反爬机制。详细内容涵盖开发步骤、Python实现示例、反爬策略、数据解析与存储、注意事项及扩展应用场景。推荐工具链包括Playwright、aiohttp、lxml等。如需进一步帮助,请联系作者。
|
8天前
|
数据采集 JSON 数据可视化
JSON数据解析实战:从嵌套结构到结构化表格
在信息爆炸的时代,从杂乱数据中提取精准知识图谱是数据侦探的挑战。本文以Google Scholar为例,解析嵌套JSON数据,提取文献信息并转换为结构化表格,通过Graphviz制作技术关系图谱,揭示文献间的隐秘联系。代码涵盖代理IP、请求头设置、JSON解析及可视化,提供完整实战案例。
JSON数据解析实战:从嵌套结构到结构化表格
|
8天前
|
机器学习/深度学习 JSON 算法
淘宝拍立淘按图搜索API接口系列的应用与数据解析
淘宝拍立淘按图搜索API接口是阿里巴巴旗下淘宝平台提供的一项基于图像识别技术的创新服务。以下是对该接口系列的应用与数据解析的详细分析
|
8天前
|
JSON API 数据格式
淘宝商品评论API接口系列的应用与数据解析
在电商平台中,用户评论是了解商品质量、服务水平和用户满意度的重要数据来源。淘宝作为中国最大的电商平台,提供了商品评论API接口,帮助开发者获取和分析用户评价数据。本文将介绍淘宝商品评论API接口系列的作用、使用方法,并通过示例展示如何调用API并解析返回的JSON数据。
|
15天前
|
存储 数据采集 JSON
Python爬取某云热歌榜:解析动态加载的歌曲数据
Python爬取某云热歌榜:解析动态加载的歌曲数据
|
22天前
|
Java API 数据处理
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
27 4
|
17天前
|
人工智能 Java 程序员
一文彻底搞清楚C语言的函数
本文介绍C语言函数:函数是程序模块化的工具,由函数头和函数体组成,涵盖定义、调用、参数传递及声明等内容。值传递确保实参不受影响,函数声明增强代码可读性。君志所向,一往无前!
18 1
一文彻底搞清楚C语言的函数
|
2月前
|
存储 编译器 C语言
【C语言程序设计——函数】分数数列求和2(头歌实践教学平台习题)【合集】
函数首部:按照 C 语言语法,函数的定义首部表明这是一个自定义函数,函数名为fun,它接收一个整型参数n,用于指定要求阶乘的那个数,并且函数的返回值类型为float(在实际中如果阶乘结果数值较大,用float可能会有精度损失,也可以考虑使用double等更合适的数据类型,这里以float为例)。例如:// 函数体代码将放在这里函数体内部变量定义:在函数体中,首先需要定义一些变量来辅助完成阶乘的计算。比如需要定义一个变量(通常为float或double类型,这里假设用float。
50 3

推荐镜像

更多