今天来给大家分享一下我学到的关于数据存储的知识

简介: 今天来给大家分享一下我学到的关于数据存储的知识

前面的学习我们可能见过char、short (int)、int、long (int)、long long、float、double这些定义变量时所使用的内置类型,那么它们到底有什么用呢?


char        //字符数据类型           在内存中开辟1个字节的空间大小

short       //短整型                     在内存中开辟4个字节的空间大小

int         //整形                           在内存中开辟4个字节的空间大小

long        //长整型                     在内存中开辟4/8个字节的空间大小

long long   //更长的整形           在内存中开辟8个字节的空间大小

float       //单精度浮点数           在内存中开辟4个字节的空间大小

double      //双精度浮点数        在内存中开辟1个字节的空间大小


当我们在定义变量的时候我们要根据变量的类型和大小来合理的使用这些内置类型


变量又基本分为字符和整形,定义字符时往往使用char,而整形又分为整数和浮点数,这些就要依情况而定了。


那么下面我就来说说整数和浮点数在计算机中是怎样存储的


首先我们得知道计算机是二进制机器,它只能认识0和1,我们生活中往往使用的是十进制,而计算机就需要将十进制转化为二进制,然后以补码的形式存储,那么什么又是补码呢?


要想知道什么是补码,就得先知道什么是原码和反码。


三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位 正数的原、反、补码都相同。


原码

直接将数值按照正负数的形式翻译成二进制就可以得到原码。

反码

将原码的符号位不变,其他位依次按位取反就可以得到反码。

补码

反码+1就得到补码。


一般整形在计算机中都是以补码的形式存储


浮点数在计算机中又是怎样存储的呢?


根据国际标准IEEE(电气和电子工程协会) 754,任意一个二进制浮点数V可以表示成下面的形式:


(-1)^S * M * 2^E

(-1)^S表示符号位,当S=0,V为正数;当S=1,V为负数。

M表示有效数字,大于等于1,小于2。

2^E表示指数位。


举个例子来说:


十进制的6.0,写成二进制是110.0,相当于1.1*2^2

按照上面的格式,可以得出S = 0,M = 1.1,E = 2。


IEEE 754规定:


对于32位的浮点数,最高的1位是符号位s,接着的8位是指数E,剩下的23位为有效数字M


这里有一点不同E存储的时候往往需要加上一个特定的数字,这里加的是127


而M部分存储的时候,因为M大于等于1小于2,所以为了节省一位有效数字,只是将小数点后面的数字存储进去,当需要拿出它的时候,前面只需加上一个1。


20.png

对于64位的浮点数,最高的1位是符号位S,接着的11位是指数E,剩下的52位为有效数字M

这里E需要加上1023

21.png

举一个例子:


十进制9.0用在计算机中二进制表示为1001,用IEEE表示为(-1)^0*1.001*2^3

S=0,M=1.001,E=3(记住E要加127)


在计算机中就是这样存储的

0 10000010 00100000000000000000000(这里空格是为了看的更清楚)


所以他的地址为0100 0001 0001 0000 --> 0x 41100000


而因为一般我们的计算机都是小端字节序,所以存储的就是00 00 10 41


那么就谢谢大家的观看

相关文章
|
7月前
|
存储 编译器 C语言
数据存储以及内存
数据存储以及内存
64 1
|
存储 缓存 前端开发
详解前端数据存储
详解Cookie, Session, SessionStorage, LocalStorage 引言 在Web开发中,数据的存储和管理是非常重要的。Cookie、Session、SessionStorage和LocalStorage是常见的Web存储解决方案。本文将详细介绍这些概念,比较它们的特点和用法,并提供相关的代码示例。
194 0
|
1月前
|
存储 SQL 分布式计算
数据存储与管理技术有哪些?
数据存储与管理技术有哪些?
76 3
|
6月前
|
存储 小程序
数据存储,详细讲解
数据存储,详细讲解
|
7月前
|
存储 关系型数据库 数据库
关系型数据库结构化数据存储
【5月更文挑战第10天】
159 7
|
7月前
|
存储 NoSQL 关系型数据库
你应该知道一些其他存储——列式存储
你应该知道一些其他存储——列式存储
112 2
|
7月前
|
存储 对象存储 块存储
高性能数据存储有哪些方式
高性能数据存储有哪些方式
149 0
|
存储 应用服务中间件 nginx
k8s--数据存储、EmptyDir存储
k8s--数据存储、EmptyDir存储
|
存储
MVME55006E-0163R 将数据存储到可移动存储设备中
MVME55006E-0163R 将数据存储到可移动存储设备中
205 0
MVME55006E-0163R 将数据存储到可移动存储设备中
|
存储 编译器 C语言
【学习笔记之我要C】数据存储
【学习笔记之我要C】数据存储
65 0
下一篇
DataWorks