最近小编学习了数据储存的相关知识,学的过程中感觉这部分知识可以帮助更加深入本质地去理解代码,但是由于小编脑容量太小,没有办法一次性把这些知识全部记住,于是就想借用博客的方式来帮助自己理解巩固这部分的相关知识。那么废话不多说,我们开始。

一、数据类型介绍

首先再来回顾一下基本的内置类型
char 字符数据类型,占据储存空间大小为一个字节
short 短整型,占据储存空间大小为两个字节
int 整形,占据储存空间大小为四个字节
long 长整型,占据储存空间大小为四个字节
long long 更长的整形,占据储存空间大小为八个字节
float 单精度浮点数,占据储存空间大小为四个字节
double 双精度浮点数,占据储存空间大小为八个字节
类型不同,使用其开辟内存空间的大小不同
同一块内存空间,用不同的类型视角去解读传达的信息也不相同

二、类型基本归类

大类的话主要是分成整型和浮点型两类,还有就是自定义的构造类型,指针类型和空类型,下面主要枚举整型和浮点型
整型家族:
char:
unsigned char
signed char
short:
unsigned short [int]
signed short [int]
int:
unsigned int
signed int
long:
unsigned long [int]
signed long [int]
浮点数家族:
float
double

三、整型在内存中的储存

首先我们要先来了解原反补码的概念
计算机中的有符号数有三种表示方法,即原码、反码和补码。
三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位三种表示方法各不相同。
原码
直接将二进制按照正负数的形式翻译成二进制就可以。
看到这里,要将正数和负数区分开了,
正数的反、补码就是原码。
而负数的反码和补码遵循以下规则
反码
将原码的符号位不变,其他位依次按位取反得到。
补码
反码+1得到补码。
下面重点来了!!!
对于整形来说:数据在内存中存放的方式是以补码的形式存放。
这个实在是太重要了,我觉得这句话是理解整型在内存中储存的基础
然后我们再来介绍大小端
大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;
小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位,,保存在内存的高地址中。
看着是不是有点头大?我们来画一张图

图中可以清楚地看到,大端就是将数据在图示方框下正着写,小段就是将数据以字节为单位倒着写(就是字节内部顺序不变,字节外部顺序颠倒)
(方框代表内存)
本文只是介绍了一些基本的概念,整型存储的水很深,我现在还没有完全把握住(狗头),等我把握住了再回来追更。

四、浮点型在内存中的储存

浮点数的储存相对于整型更加复杂
我们用一张图来表示
我们知道,数据在内存中都是以二进制的形式来储存的
同样的一个数据用不同类型去解读会有不同的效果
比如11111111111111111111111111111111
用整型来解读的话这个二进制数据会被解读成数字-1
但用浮点型来解读的话就不一样了
以浮点型的视角来解读的话

我们会把这个32位的二进制数字分成个s,E,M三个模块
这三个模块分别代表什么含义呢?
下面看一个例子
浮点数5.50的表示方法

我们可以认识到:
任何一个浮点型数字都可以由一个-1的0或1次方乘上一个位于1~2之间的数再乘上2的E次方来表示
图中s取值为0或1,M取小数点后的数字,E取图中2的指数
更进一步了解,我们认识到
E是一个无符号整数
这就意味着对于float类型,E的取值范围是0~255,但是,我们知道科学计数法中E是可以为负数的,
因此为了表示负数,我们规定了一个中间数127,存入内存时E的真实值必须要先加上127,再存到
内存中。
比如例中的E=2,我们需要加上127得到129,放进内存中就是10000001
指数E从内存中取出还可以再分成三种情况:
E为全零:
这种情况下,我们规定E的真实值为1-127,相对应的,M还原为0.xxxx的小数,保留小数点后的数字
这种表示方法可以更加清晰地看出该数字是一个无限接近于零的数字。
E为全一:
这时,如果有效数字M全为0,表示±无穷大(正负取决于符号位s)。
E不为全零或者全一:
那么我们就按照上述法则将E-127还原为真实值,把M的个位上的1给补上。
以上就是float类型的数据存储,double类型与float类型相似,下次有机会再码。

写在后面:感觉写博客真的很爽,学校里的论文绞尽脑汁凑字数,但写博客却不知不觉写了两千字,
这可能也是主动和被动的区别吧。希望以后随着对编程的不断学习,我能写出越来越多的博客。
(小白水平毕竟有限,连我自己都觉得写得很浅,但凡事总有个过程不是,我相信随着我层次的不断
提升,我会写出越来越好的博客,加油奥利给!(狗头保命))。

练好敲代码的内功——初识数据储存相关推荐

  1. Android文件操作代码示例,sd卡数据储存

    1. public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle save ...

  2. 第一行代码 第六章 数据储存方案 - LitePal数据库存储

    LitePal – 一款开源的Android数据库框架. 它采用对象关系映射的模式(ORM),将开发中常用的数据库功能进行封装,使得不用编写SQL语句就可以完成各种建表和增删改查的操作. 在项目中使用 ...

  3. 敲代码,从会敲键盘到敲不动键盘,2019猪年,拱都中了

    写在2019年新年放假最后一天,写完了放假过年,我们放假10天10天10天,重点说三遍,羡慕吧O(∩_∩)O哈哈~ 写在2019年的起步阶段,回头想想,我就呵呵o(* ̄︶ ̄*)o了,这一下想到了解放前 ...

  4. 程序员再也不能埋头敲代码了

    上周,阿里巴巴重磅发布了机器学习平台 PAI 3.0 版本,据悉,这个 PAL 平台封装了 200 多种经典算法,可以轻松搭建机器学习实验.作为码农一枚,使我不得不抬起原本一直低着敲代码的头,看看这个 ...

  5. pycharm 敲代码时的效果插件_精选Pycharm里6大神器插件

    原标题:精选Pycharm里6大神器插件 上次写了一篇关于Sublime的精品插件推荐,有小伙伴提议再来一篇Pycharm的主题.相比Sublime,Pycharm要强大许多,而且是专为python设 ...

  6. 女程序员怀孕7个月坚持上班敲代码

    全世界只有3.14 % 的人关注了 数据与算法之美 在男女比例失调的程序员行业里,程序媛的工作日常是怎么的呢? 程序媛遇到bug时是不是有很多程序员帮忙呢? 程序媛对加班有什么看法呢? 女生当程序媛好 ...

  7. 周末想找个地方敲代码_观看我们的代码游戏,全周末直播

    周末想找个地方敲代码 by freeCodeCamp 通过freeCodeCamp 观看我们的代码游戏,全周末直播 (Watch us Code Games Live All Weekend) Not ...

  8. aspen怎么做灵敏度分析_不会敲代码怎么做智能分析?用奥威商业智能BI

    不会敲代码,怎么学也不会,那怎么做大数据智能分析?说来也简单,用商业智能BI软件就行.拖拉拽就能做报表,点击即可智能分析,即使是没有IT基础,完全不会敲代码的人也能轻松抽取数据做智能分析. 商业智能B ...

  9. 用spss做哑变量--给不敲代码同学福音

    今天给各位分享怎么用spss做哑变量,也算是给不想敲代码的同学带来一些福利. 首先介绍下什么是哑变量.哑变量是由虚拟变量衍生过来,指的是非数值型的字符变量转换而来的变量,通常情况下这些变量都是无序的变 ...

最新文章

  1. 为什么至少三个哨兵_为什么需要 Redis 哨兵?
  2. 怎样高效实现增长?这里有50个经典的增长黑客策略
  3. 加投35000瓶原价茅台 天猫双11今晚8点开售
  4. charles都踩过哪些坑_野路子14年 不如“缠论”1年 收益翻20倍
  5. SQL Developer显示多个工作表
  6. 织梦采集侠教程设置免费版本
  7. flex blazeds java spring_flex+blazeds+java+spring后台消息推送
  8. 自学单片机是否先学c语言,学习单片机一定要先学好C语言再去学单片机吗
  9. 「GoTeam 招聘时间」滴滴出行系统研发工程师(北京)
  10. 基于PyQt的分组工具
  11. 用友BIP产品矩阵亮相首届中小企业数字化转型大会,数智创新驱动企业高效成长
  12. Python——创建二维列表的简易方法
  13. QQ、微信、新浪微博和百度第三方登录
  14. ExoPlayer详解——入门(官方文档)
  15. autoit3 试用
  16. 群晖NAS | 新技能Get,ABB套件文件服务器的安全备份攻略
  17. html5怎么让字跟图片对齐,css怎么将字和图对齐
  18. MQL5 初学者:EA 交易技术指标使用指南
  19. [视频]老罗涂着李佳琦的口红,漂亮得不像实力派!4-1直播你看好吗?
  20. jaxb 的使用介绍[转载]

热门文章

  1. Cesium 修改球体
  2. 为什么弃用手机FireFox浏览器
  3. 现有如下图所示人物图像,编程实现人物美肤(祛斑、磨皮)。
  4. 【gec6818学习】
  5. 微盟餐饮SaaS蜕变时刻:战略投资奥琦玮,领军之势已成
  6. Redis学习笔记—redis-cli详解
  7. 我的世界java新增海洋_我的世界:MC新版本计划加入的生物,海洋类大更新最受玩家期待!...
  8. 使用ichartjs生成图表
  9. VS2019/MFC编程入门之常用控件:按钮控件的编程实例
  10. 2021年中国便携式净水器市场趋势报告、技术动态创新及2027年市场预测