数据存储(跑路人学习笔记)

简介: 数据存储(跑路人学习笔记)

前言

最近要考试,咱就少写博客了。(虽然已经断更了很长一段时间了,嘿嘿)话不多讲。

开始!!!


一、整数存储方式(引入大小端)

我们都知道我们的cpu因为只有加法处理器,因此当处理负数是就必须要使用一些手段,也就是我们的原、反、补码。

稍微讲一下正数我们的原码、反码、补码相同,但,负数原反补需要运算

如-2:

原:10000000000000000000000000000010

反:1111111111111111111111111111111111101

补:1111111111111111111111111111111111110

下图为编译器里存储的-2。(在显示时为16进制每一行为一个字节,int 为四个字节所以就截了四行)

image.png

OK,我们知道了整形的存储方式了但是我们又不禁会想为啥他地址从低到高的时候是feffffff而不是fffffffe呢?

此时我们就可以引出大小端储存


二、大小端储存

首先我们要知道大小端储存是跟编译器不同而不同

OK,我们先将大端小端的书面意思告诉大家

大端(存储)模式:是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中。

小端(存储)模式:是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。

我们用int a = 0x11223344来演示

(地址是我从VS2019现扣出来的)

(VS2019为小端存储)

image.png


我们在编译器将它用四列为一行时

image.png

我们在定义变量时将44放在了最低位数上(类似个位十位百位那种我们将个位称为数据的低位然后大小端的存储我们就类比思想就很容易想明白了)我们就称44为数据的低位我们将44放在了低地址处这也就符合了小端储存的低位放在低地址处。

当然如果不想理解就直接大放大 小放小为小端存储就好了。大端就相反


浮点数的存储

例子

先来个例子勾一下好奇心,嘿嘿 。


image.png

同为4个字节的关键字因为存储读取的不同在同一个数字就会有巨大的区别。

下面我们来对浮点型的存储方式进行讲解


浮点型存储读取方式

以5.5为例,十进制的5.5转化成二进制位101.1

而在存储二进制的时候我们将二进制利用科学计数法将101.1变成1.011*22 而当负数存储时我们就会在前面加一个-1

所以我们的浮点型在存储时就根据IEEE 754的规定将十进制的数字拆成二进制并写成下面的形势

(-1)S ×M × 2E

S为0时为正数为1时为负数

M的数值1<=M<2

E为指数位

(其实和十进制的科学计数法几乎一样)

(下图为float(四字节)类型在编译器的存储方式)


下图为double(八字节)类型存储方式

image.png

image.png

下面我以float(四字节)为例进行讲解 :

我们除了对E、M、S进行数值上的要求还进行了其他优化之类

如:

对M:

因为M的值在1<=M<2及1.xxxxxx所以我们在存储时干脆不对1进行存储而对0.xxxxx存储到M的位置中这样我们对M存储精度就会再次增加。

对E:

对E情况比较复杂首先我们要知道在存储E时我们是按照unsigned的标准进行存储及E没有负数形式但我们在用科学计数法时我们的指数位是有负数情况的所以我们就规定再存储时我们要先对E加上127(四字节时)然后再进行存储。

在E不全为1或0时:

在E存储的数据不全为零或一时我们要想使用E的数值我们就先对其减去127就可以正常使用我们也得到了指数位的负数情况

当E全为零时:

我们知道在存储时我们的E已经先加上了127但是依旧在存储时为全为零我们就可知我们得到的数及其小,这是我们就将M直接用为0.xxxx也就直接将该值看做0

当E全为1时:

这是有效数字M全为0直接将该数定义成无穷。

这时我们就可以解释前面的例题了:

我们在存储a时为0x0000000a而当他存储到浮点型时我们不难发现s=0(一个bit);E=0(8个bit);我们E全为0时我们的浮点型也就为0。下面思路类似。


结束废话

本章主要对底层逻辑知识进行了一次进阶提升。有点难理解大家可以找部分视频一起理解。

再见ヾ( ̄▽ ̄)ByeBye


相关文章
|
4月前
|
存储 分布式计算 大数据
大数据处理竟然这么简单?学会这几招,你也能在数据洪流中游刃有余,秒变数据大师!
【8月更文挑战第6天】面对海量数据,有效处理成为关键。本文介绍大规模数据处理的核心挑战及解决方案,涵盖分布式存储(如HDFS)和计算(如Spark)。通过示例代码展示HDFS文件读写及Spark数据处理流程。此外,还强调了数据质量、安全及合理资源配置的重要性,助您在数据海洋中洞察先机。
88 1
|
7月前
|
SQL 关系型数据库 MySQL
“时光机”与“多维视界”⭐️MySQL中原子性与隔离性的科幻大片
“时光机”与“多维视界”⭐️MySQL中原子性与隔离性的科幻大片
|
消息中间件 缓存 Java
牛掰!阿里人用7部分讲明白百亿级高并发系统(全彩版小册开源)
高并发 提到“高并发”相信你们应该都不会感到陌生!此时你脑中应该会浮现好多有关高并发的:业务急剧增长、电商购物、电商秒杀、12306抢票、淘宝天猫各种活动等;都是需要用到高并发的,那么如何去设计一个高并发系统抵挡这些冲击呢? 其实这也是一道很常见的面试题,但是大多数应聘者都不知如何回答,从何答起。对于一个Java程序员来讲,,更关注的是不是系统架构层面的呢?从原本的定时秒杀,到现在各种活动的预热、拼团、定金膨胀、百亿补贴、跨店满减以及更复杂的组合优惠,让用户摸不到头脑,虽然这些都扰乱了用户购买的节奏,但是也一直保持着持续升温的状态。
|
存储 小程序 编译器
”神仙修炼“之C的数据存储
char //字符型,所占存储空间为1字节int //基本整形,所占存储空间为4字节unsigned int //无符号整型,所占存储空间为4字节long (int) //长整型,所占存储空间为4/8字节unsigned long //无符号长整型,所占存储空间为4/8字节long long (int) //长长整型,所占存储空间为8字节short (int) //短整型,所占存储空间为2字节unsigned short //无符号短整型,所占存储空间为2字节。
110 0
|
域名解析 负载均衡 网络协议
一套互联网公司理想架构,快快收藏。。(1)
一套互联网公司理想架构,快快收藏。。(1)
275 0
一套互联网公司理想架构,快快收藏。。(1)
|
存储 缓存 网络协议
一套互联网公司理想架构,快快收藏。。(3)
一套互联网公司理想架构,快快收藏。。(3)
156 0
一套互联网公司理想架构,快快收藏。。(3)
|
存储 人工智能 安全
剑桥大学把达尔文笔记本原稿给弄丢了,包括著名的“生命之树”,价值超百万
剑桥大学把达尔文笔记本原稿给弄丢了,包括著名的“生命之树”,价值超百万
182 0
|
存储 数据中心 安全
|
大数据
大数据知道你的心脏能不能跑马拉松
本文讲的是大数据知道你的心脏能不能跑马拉松1月2日,2016厦门国际马拉松赛在鹭岛开赛,获得了诸多运动爱好者的追捧。随着近年马拉松运动的兴起,越来越多的兴趣者加入其中。但是,是否所有人都适合这样的运动?
1528 0