数据在内存中的存储(各种各样的都有)

数据在内存中的存储 文章详解加练习题(理论加实践) 希望给位有所收获 阅读详情

引子

今天我们来讨论一下关于数据在计算机中的储存,这个知识点其实不难,但是也是有难度的。难在知识点多,难背,又很杂,每一个知识点基本上没有联系,所以我们在学习另一个知识点的时候,之前的思路可能就不对了。但是我们要有一个中心思想就是,数据的储存。他为什么要以这样的形式储存就一定有他的道理(他的好处),毕竟c语言的设计师也是人,肯定的怎么简单怎么设计。如果这个不简单,那就是因为他有一些特殊的功能在这个情况下用不了。

我们先讲一讲我们本章讲的知识点1.原码,反码,补码。2.大小端。3.浮点数的储存。

原码,反码,补码

原码,反码,补码。我们还是很熟悉的,因为这个太基础了,我们在写程序的时候,是不是会创建int型,那int型在计算机中的储存规则的原码,反码,补码(这些全部的以二进制形式表现的)。

整形有二种一种是有符号的,一种是无符号的。但是他们看起来有两种,其实区别不大,无符号的就是第一位,正常。而有符号的第一位就不一定了。0表示正,1表示负。

有点跑题了,现在我们讲数据储存,无符号的可以看为正数,而正数的原,反,补一样。

所以重点是有符号的,而正数同上。

负数首先把数值按照正负数的形式写成二进制就是原码。后面符号位不变,其他位按位取反(就是0变1,1变0)就得到了反码,再加1就是补码。而计算机储存的就是补码。

这个不难,就是不知道为什么要这么复杂,我们来说原因。因为cpu只会加法,不会减法,所以把负数变成这样就是二个数相加了。

好,下一个,大小端

我们想一想,一个int有4个字节,这4个字节在计算机里面的怎么放,是按我们正常的顺序,前面是大的位,后面小的位,还是小的位放前面,大的位放后面。这个就是大小端。

先看定义

看了下面就可以记小位在低地址是小端,大位在低地址是大端。

看我的电脑

哦,内存中是44332211,他是反过来的。首先我们要知道局部变量是在栈中储存的,而栈是向下增长,所以就是

而44是小位还是大位呢。

所以44是小位,所以小位在低地址是小端。

讲完了大小端,好不好奇原因。不好奇也要好奇。我们现实生活中都是以计算机的视角来看都是大端(但是没有高,低地址的区分)但是,我们为什么要发明小端呢,我们又不是受虐狂,没事给自己找事做。那肯定是有他的原因的。就比如你写int a = 1,如果是大端那前面是不是全部是0到好后面才有一个1,你就更难看嘛,所以小端就来了,前面就是1,不管他后面多少0,都不看。

浮点数的储存

你能看出什么,其实什么都看不出,最多看出一个浮点型和整形的储存方式不同。那就可以了。

所以,你就不会。好,现在讲嘛。

反正我感觉浮点数的储存还是蛮难记的

先记这个,你想这个V是不是就可以表示全部的浮点数了。对,可以全部表示,但是有一点特殊你不要搞一个无限或循环的小数告诉我写不出(我就直接用肢体语言告诉你)。还有一点特殊后面有。

这个

好理解,就是正负嘛。

有效数字和指数位听过没,就是科学技术法嘛,科学技术法是怎么写的987654321就写为9.87654321*10的8次方,这个也是啊。1010011101就是1.010011101*2的9次方。所以M=1.010011101,E=9.噢了。但是我们聪明的科学家想到:欸,1.010011101这个位置的数,好像一定要开头的1欸,对还是不对。那既然是这样,我们这个1就可以不写了,还能多一个位出来,一举两得。你们想一想2.5的有效数字的什么,是不是1.0101.2就是10,5就是101就是10101在加一个点。很有道理,但是错了(你会想还是好的),小数部分我们按

就好了。所以0.5就是2的负一就是1.01.

而E的话就有不同的情况了。首先E是一个无符号数,但是我们的E有时候为负的啊,因此,我们就要先给他加一个数,后面再减嘛。

还有3个特殊情况

最后一个了,就是我有了S,E,M。怎么放呢。

欧克,完美结束。

OpenHarmony + AI:深度解析 Whisper.cpp 智慧语音系统级移植与 NAPI 封装实战 【代码】OpenHarmony + AI:深度解析 Whisper.cpp 智慧语音系统级移植与 NAPI 封装实战。 阅读详情

相关推荐

医学图像标注工具教程——从零开始使用3D Slicer进行医学图像手动分割

3D Slicer手动分割软件下载及安装数据导入导入CT序列文件夹导入单张超声基本交互操作窗位和窗宽的调整改变切片及寻找特定点对应的三维切片图像分割功能介绍PaintDrawEraseLevel tracingGrow from seedsFill between slicesThreshold & Margin & HollowSmoothingScissors & IslandsLogical operator分割结果的保存 软件下载及安装 下载地址:官网的4.11.0版本 数据

神仙院B栋4楼保安的博客 1万+

详解数据在内存中的存储

数据在存储器中以二进制形式表示,即由0和1组成的比特(bit)。不同类型的数据在内存中占据不同数量的比特,这取决于其数据类型和存储需求。常见的数据类型包括整型(如char、short、int、long)、浮点型(如float、double)、指针类型等。

TENET123的博客 1901

FUXA实战:5步搞定基于Web的SCADA系统搭建(含Node.js版本避坑指南)

本文提供了一份基于开源工具FUXA搭建Web版SCADA系统的实战指南。文章重点解析了从环境准备到生产部署的五个核心步骤,并特别强调了Node.js版本选择对西门子S7 PLC通信兼容性的关键影响,帮助开发者避开常见陷阱,快速构建工业监控界面。

weixin_29172963的博客 139

关于数据在内存中的存储

着重介绍数据在内存中的存储方式,包括整形字符型浮点型数据

Dai_renwen的博客 1312

搭建ipv6并发代理池

我开了个知识星球,把将本期搭建写成shell脚本已放到了里面,有需要的小伙伴可以自行去取,jd的参数,阿里bxet纯算、快手滑块,Pdd—Anti,ikuai,b站login之-极验3文字,某音ab,瑞数456vmp补环境等等,主要是某些大佬加我问成品,很多人都打着白嫖的手段去加我好友为目的,问完基本就以后没有任何的交集,这样的交好友雀氏没有任何意义。不如我直接开个星球,里面直接放我逆向的成品以及逆向的思路,这样大家各取所需,我也有点收益,意义更明确点,免得浪费大家的时间。我是pve下的ubuntu。

weixin_44697518的博客 1471

VHDL实战:基于EDA的数字频率计(FREQ)设计与优化

本文详细介绍了使用VHDL语言和EDA工具设计并优化数字频率计(FREQ)的全过程。从核心原理与模块划分入手,深入讲解了时钟分频、测频控制、计数锁存及显示驱动等关键模块的VHDL实现,并提供了从代码编写、功能仿真到综合布局布线的完整EDA实战指南。文章还探讨了测量精度优化、资源权衡及跨时钟域处理等进阶话题,是掌握FPGA数字系统设计的经典案例。

milk8的博客 583
上一篇: 字符串函数的讲解——怎么用和怎么写
下一篇: 数据结构(宝宝级别:顺序表-》通讯录)
star050913
博客等级 码龄3年 277粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值