你所不知道的 数据在内存中储存 的来龙去脉

这篇具有很好参考价值的文章主要介绍了你所不知道的 数据在内存中储存 的来龙去脉。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

        那么好了好了,宝子们,今天给大家介绍一下 “数据在内存中储存” 的来龙去脉,来吧,开始整活!⛳️         

一、数据类型的介绍

(1)整型和浮点型: 

你所不知道的 数据在内存中储存 的来龙去脉 (2)其他类型:

你所不知道的 数据在内存中储存 的来龙去脉

你所不知道的 数据在内存中储存 的来龙去脉

 你所不知道的 数据在内存中储存 的来龙去脉

 二、数据在内存中的储存顺序(大端 小端)

 (1)引入字节序:

字节序 是以 字节 为单位讨论内存的储存顺序的

什么大端小端:
大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;
小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位 , ,保存在内存的高地址中。
注意:这里的 低位 和 高位 是指:个十百千万 的低位和高位
(2)如何判断:

 那么接下来以我的编译器vs2022,给大家来示范判断一下如何判断是大端储存模式还是小端储存模式?

你所不知道的 数据在内存中储存 的来龙去脉

        由此可以看出我们的低位存放的是低地址,高位存放的是高地址,所以说在此种情况下,这种储存模式是小端储存

三、通过例题来介绍:数据在内存中是如何存储的

1.(解析在代码中)


#include <stdio.h>
int main()
{


	char a = -1;
	//10000000000000000000000000000001(原码来写出来),因为你输入的是-1,是整数,所以说是4个字节,要写32个比特位。
	//11111111111111111111111111111110(反码)
	//11111111111111111111111111111111(这是补码),又因为这里a变量的数据类型是char只能存放1个字节,8个比特位,所以说这里需要从低位向高位进行截断,
	//11111111 (a)截断后
	//11111111111111111111111111111111(因为最终的结果是以十进制的形式打印有符号的整数,所以说这里需要进行整形提升)依然按照整形提升的规则来。(补码)
	//11111111111111111111111111111110(反码)-1啦
	//10000000000000000000000000000001 (原码)所以最终的结果:-1,是这样来的

	signed char b = -1;
	//11111111111111111111111111111111
	//11111111 -b

	unsigned char c = -1;
	//11111111 -c
	//00000000000000000000000011111111
	//
	printf("a=%d,b=%d,c=%d", a, b, c);
	//%d - 十进制的形式打印有符号整型整数
	//整型提升

	return 0;
}

 c=255的解释:

你所不知道的 数据在内存中储存 的来龙去脉

2.


#include <stdio.h>
int main()
{
	char a = -128;
	//-128
	//10000000000000000000000010000000(原码)
	//11111111111111111111111101111111(反码)
	//11111111111111111111111110000000(补码)
	//-128的补码
	//10000000(截断后)
	//11111111111111111111111110000000(整形提升后)--最终结果
	//
	printf("%u\n", a);
	return 0;
}

 3.

#include <windows.h>

int main()
{
	unsigned int i;
	for(i = 9; i >= 0; i--)
	{
		printf("%u\n", i);
		Sleep(1000);//单位是毫秒
	}

	return 0;
}

你所不知道的 数据在内存中储存 的来龙去脉

 结果到零的时候,为什么是又变成了一个很大的数字呢?

这答案就在下面的这张图里面,(注意:这个图里面的数据类型是char,但是解释原理是一样的)

你所不知道的 数据在内存中储存 的来龙去脉

 当 i 减到零的时候,有32个0,再减的时候,就变成了全1:

你所不知道的 数据在内存中储存 的来龙去脉

4.(很奇妙的例题):

#include <string.h>
#include <stdio.h>
int main()
{
	char a[1000];
	int i;
	for (i = 0; i < 1000; i++)
	{
		a[i] = -1 - i;
	}
	printf("%d", strlen(a));
	return 0;
}

你所不知道的 数据在内存中储存 的来龙去脉

结果为什么是这个呢?那么接下来看4张图片,你就会明白了 

还有一点需要注意:他先打印的是-1,-2,-3,-4........-128,127,126......1,0(这一组数不断的循环打印!但是0='\0',strlen函数只计算‘\0’之前的内容,所以最终答案是255。)

你所不知道的 数据在内存中储存 的来龙去脉

你所不知道的 数据在内存中储存 的来龙去脉

 文章来源地址https://www.toymoban.com/news/detail-463007.html

 

 

你所不知道的 数据在内存中储存 的来龙去脉

你所不知道的 数据在内存中储存 的来龙去脉

 

 

 所以,综上所述:

char = signed char的范围是:(-128~127)

unsigned char的范围是:(0~255)

在最后我总结了一份关于这种类型题的解题思路:(大家可以参考一下,还望多多指教)

你所不知道的 数据在内存中储存 的来龙去脉

好了,今天的分享就到这里了

如果对你有帮助,记得点赞👍+关注哦!
我的主页还有其他文章,欢迎学习指点。关注我,让我们一起学习,一起成长吧!

你所不知道的 数据在内存中储存 的来龙去脉

 

到了这里,关于你所不知道的 数据在内存中储存 的来龙去脉的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • F5是什么意思?聊聊你所不知道的F5

    5月底,有幸参加了F5 Forum 科技趋势峰会,这让我不仅关注数字化企业和应用服务的技术趋势,也对华丽转型后的F5有了更深入的了解。如果你对F5是什么意思尚且存在疑问,那这篇文章我们就聊聊我眼中的F5,这个应用及API交付和安全防护市场的顶级玩家。   F5的成就是有目共

    2024年02月13日
    浏览(33)
  • 你所不知道的ASP.NET Core进阶系列(三)

    一年多没更新博客,上一次写此系列还是四年前,虽迟但到,没有承诺,主打随性,所以不存在断更,催更,哈哈,上一篇我们细究从请求到绑定详细原理,本篇则是探讨模型绑定细节,当一个问题产生到最终解决时,回过头我们整体分析其产生背景以及设计思路才能有所获

    2024年02月05日
    浏览(39)
  • 3.你所不知道的go语言控制语句——Leetcode习题69

    目录 本篇前瞻 Leetcode习题9 题目描述 代码编写 控制结构 顺序结构(Sequence) 声明和赋值 多返回值赋值 运算符 算术运算符 位运算符 逻辑运算 分支结构 if 语句 switch 语句 逻辑表达式 fallthrough 类型推断 循环语句 continue break goto Leetcode习题69 题目描述 题目分析 代码编写 本篇

    2024年02月12日
    浏览(34)
  • 你所不知道的NVMe SSD固态硬盘读写速度及国货的惊喜--基于FPGA的速度测试

      在\\\"FPGA实现高带宽NVMe SSD读写\\\"帖子中介绍了项目背景及系统架构、FPGA实现NVMe读写的大致实现方法。项目中需要将图像传感器产生的高速数据流实时稳定的持续存储,即不仅要求较高的存储带宽,还同时需要该存储带宽保持始终稳定、持续。   在项目做系统设计的时候

    2024年02月06日
    浏览(44)
  • 二次型的来龙去脉

            在学习二次型的时候没有好好理解概念,导致记住了可以用的结论,但往往遇到题目反应不过来,故这次对二次型进行一个详细剖析。         首先二次型是什么?是一个n元变量的二次齐次多项式,根据二次齐次多项式的定义(所有单项的次数都是2,单项的次数为

    2024年02月09日
    浏览(33)
  • 一文解释mapState的来龙去脉

    mapState Vuex 提供的辅助函数之一,将 store 中的状态映射到组件的计算属性中,使得在组件中可以轻松地访问 Vuex store 中的状态值 MapState(映射状态) 在我们的 Count.vue 组件中,可以使用 mapState 来更简洁地获取 count 的状态值 首先,导入 mapState : 然后,在 computed 中使用 mapState :

    2024年02月07日
    浏览(34)
  • 简单聊聊Https的来龙去脉

    使用明文通信,通信内容可能会被监听 不验证通信双方身份,因此可能会遭遇伪装 无法验证报文完整性,可能会遭到中间人攻击,从而篡改请求和响应报文中的内容 Http 协议直接和TCP进行通信,而 Https 在 Http 和 Tcp 之间加了一层 SSL 实现加密传输 : SSL ( Secure Socket Layer ) 安全

    2024年02月10日
    浏览(33)
  • 从源码全面解析 ArrayBlockingQueue 的来龙去脉

    👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主 📕系列专栏:Java设计模式、数据结构和算法、Kafka从入门到成神、Kafka从成神到升仙、Spring从成神到升仙系列 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一

    2024年02月05日
    浏览(35)
  • 从源码全面解析 dubbo 服务订阅的来龙去脉

    👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主 📕系列专栏:Java设计模式、Spring源码系列、Netty源码系列、Kafka源码系列、JUC源码系列、duubo源码系列 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦

    2024年02月09日
    浏览(31)
  • 从源码全面解析 Java SPI 的来龙去脉

    👏作者简介:大家好,我是爱敲代码的小黄,独角兽企业的Java开发工程师,CSDN博客专家,阿里云专家博主 📕系列专栏:Java设计模式、Spring源码系列、Netty源码系列、Kafka源码系列、JUC源码系列、duubo源码系列 🔥如果感觉博主的文章还不错的话,请👍三连支持👍一下博主哦

    2024年02月12日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包