1、基本的内置类型:

2、类型的基本归类:

(1)整形家族:

有符号和无符号的区别在下文中有提到。

(2)浮点型家族:

(3)自定义类型

(4)指针类型:

(5)空类型:

通常用于表示函数返回值,函数参数,指针类型(如 void Print(void))

3、整形在内存中的存储

(1)整形有原码,反码和补码三种由二进制表示的形式。

(2)整形数据在内存中是以补码形式存放。

整形中有符号和无符号的存储有什么不同?

<1> 有符号整形的存储:

(1)原码:最高位代表正负,0为正,1为负;

如 35 的原码为:00000000000000000000000000100011

-35 的原码为:10000000000000000000000000100011

(2)反码:正数的反码与原码一样,负数的原码除最高位,所有的位取反

如 35 的反码为:00000000000000000000000000100011

-35 的反码为:11111111111111111111111111011100

(3)补码:反码+1

如 35 的补码为:00000000000000000000000000100011

-35 的补码为:111111111111111111111111110111001

正数的原码,反码,补码都是一样的

有符号的char型表示范围为-128~127,有符号的int型表示范围为-32768~32767

<2> 无符号类型的存储:

(1)原码:最高位不代表正负,32位均为数据位;

如 35 的原码为:00000000000000000000000000100011

(2)反码:与原码一样

如 35 的反码为:00000000000000000000000000100011

(3)补码:与原码一样

如 35 的补码为:00000000000000000000000000100011

无符号类型的数据的原码,反码,补码均相同(跟有符号数据中的正数很很像)

无符号类型的所有位都表示数据,因此无符号整形的表示范围为 0~4 294 967 295,无符号字符型的表示范围为 0~255

<3>有符号整形进行计算:

28+25

28的原码为0000000000000000000000000000011100

28的反码为0000000000000000000000000000011100

28的补码为0000000000000000000000000000011100

25的原码为0000000000000000000000000000011001

25的反码为0000000000000000000000000000011001

25的补码为0000000000000000000000000000011001

28的补码加上25的补码为0000000000000000000000000000110101

转成十进制则为51

28-25=28+(-25)

28的原码为0000000000000000000000000000011100

28的反码为0000000000000000000000000000011100

28的补码为0000000000000000000000000000011100

-25的原码为1000000000000000000000000000011001

-25的反码为11111111111111111111111111100110

-25的补码为11111111111111111111111111100111

28的补码加上-25的补码为 10000000000000000000000000000000011(33位),int型数据只有32位,去掉第一位,剩下为0000000000000000000000000000000011,转成十进制为3。

4、整形从内存中如何取出

只需将补码还原成原码即可。

有符号数据:

正数:原码反码补码全都一样

负数:补码-1=反码;反码除最高位外,所有位取反得到原码(与存入的过程相反)

无符号数据:原码反码补码全都一样

5、浮点型数据在内存中的存储

根据国际标准IEEE754,任意一个二进制浮点数V可以表示成:(-1)^S*M*2^E

其中S为0或者1,浮点数为正,则S为0,浮点数为负,则S为1;

M表示有效数字,且1M<2

如-5.5 ,  5.5的二进制为101.1,则-5.5可以表示成(-1)^1*1.011*2^2(S=1;M=1.011;E=2)。

float型的存储:

double型的存储:

对于M的规定:

在存储的过程中,M只存小数部分,如存1.01时,只将01存入M中,不足的位数补0补全,float中M的部分则为01000000000000000000000。

对于E的规定:

E为一个无符号整数,则E中所有的位都是数据位,没有负号位,表示范围为0~255。

并且规定在存E时

单精度浮点数存储时,E=E+127,如float -5.5的E真值为2,存进去的E为129,则E的形式为10000010。

双精度浮点数存储时,E=E+1023;

举个例子

float 5.5存入内存    首先写成二进制形式 101.1

写成IEEE规定的形式 (-1)^0*1.011*2^2(S=0;M=1.011;E=2)

S=0   M=011 E=2+127=129=10000010

则最终存入的数据为 01000001001100000000000000000000。

6、浮点数从内存中取出

(1)S直接取出

(2)E、M的取出分三种情况:

<1> E不全为0或1: 此时E=E-127或者 E=E-1023;

M去掉从左往右数最后一个1后面所有的0,取出后,再在前面加上“1.”,变成“1.xxxxxxxx”。

<2> E全为0: E=1-127或者E=1-1023;M此时不用加上“1.”,而是还原成“0.xxxxxxxx”。此             时取出的浮点数应该无限趋近于0

<3>E全为1:取出的浮点数为正无穷或者负无穷

7、大小端字节序存储

什么是大小端?

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

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

如在VS2017中,就是大端存储

int a=0x0000005c

用一个简单的小程序,判断当前机器是以什么字节序存储的

数据存储(超全,超详细,零基础也都学的会)相关推荐

  1. ensp启动设备蓝屏_超全超详细的电脑蓝屏问题解决方案汇总

    生活太难了!每天搬砖已经够不容易,电脑还作妖: 设计图还差最后一个图层,蓝屏了!!财务工资表格马上统计完,蓝屏了?!熬了一宿马上写完1万字稿件,蓝屏了- 今天,我就带大家轻松搞定蓝屏. 什么是蓝屏 蓝 ...

  2. 超全超详细的HTTP状态码大全

    超全超详细的HTTP状态码大全 本部分余下的内容会详细地介绍 HTTP 1.1中的状态码.这些状态码被分为五大类: 100-199 用于指定客户端应相应的某些动作. 200-299 用于表示请求成功. ...

  3. linux命令行开头是sh,shell脚本语言的使用(超全超详细)

    1.shell的概述 shell 是一种脚本语言 脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译) shell 既是应用程序 又 ...

  4. linux中写脚本一般用语言,shell脚本语言的使用(超全超详细)

    1.shell的概述 shell 是一种脚本语言 脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译) shell 既是应用程序 又 ...

  5. 零基础学python全彩版pdf-(特价书)零基础轻松学Python:青少年趣味编程(全彩版)...

    基本信息 作者: 快学习教育 出版社:机械工业出版社 ISBN:9787111640004E上架时间:2020-5-26出版日期:2019 年11月开本:16开页码:176版次:1-1 所属分类: 科 ...

  6. 数据分析师就业前景怎么样?零基础能成为数据分析师吗?

    鉴于近几年这大数据行业越来越火,不少小伙伴就想转行成为数据分师,那数据分析师就业前景怎么样?零基础能成为数据分析师吗? 1.数据分析师就业前景怎么样?行业人才饱和度如何? 首先,想通过成为数据分析师赢 ...

  7. Python3 Requests+BS4网络爬虫:最详细零基础的获取百度快照链接爬虫教程(思路篇)

    Hello,大家好呀,五一劳动节快乐呀!最近在后台接到一个粉丝的私信说怎么爬取百度快照.正好五一有一段时间休息,咱们就来水一篇文章,顺便来巩固巩固基础的知识. 注意注意!这是思路篇,没有代码!只有思路 ...

  8. 黑客技术零基础入门怎么学(黑客初级入门)

    本篇文章给大家谈谈黑客技术零基础入门怎么学,以及黑客初级入门对应的知识点,希望对各位有所帮助. 本文目录一览: 1.黑客零基础入门 2.怎样自学黑客技术? 3.学习黑客需要先学习什么基础?(零基础) ...

  9. yolov5使用2080ti显卡训练是一种什么样的体验我通过vscode搭建linux服务器对python-yolov5-4.0项目进行训练,零基础小白都能看得懂的教程。>>>>>>>>>第二章番外篇

    第二章番外篇:yolov5通过vscode搭建linux服务器对python-yolov5-4.0项目进行训练,零基础小白都能看得懂的教程.YOLOv5搭建的最快搭建方式,踩坑经历详谈 前期准备: 2 ...

最新文章

  1. Visual Basic 2005 - 如何将色彩字符串转换成 Color 结构
  2. zabbix监控利用Python脚本发邮件
  3. html转jsp后空白页,netbeans 运行这个JSP 页面,结果是空白页。.
  4. iOS 消息转发机制
  5. ASP.NET Core 2.0 : 图说管道,唐僧扫塔的故事
  6. Oracle/Mysql查看锁表与解锁表
  7. 我的内核学习笔记14:内核设备树学习
  8. android简单课表,模仿大神的一个android课程表
  9. yoyo跑_足球YOYO体测大揭秘 失去资格只需两次
  10. 信号完整性仿真设计——PCB工程师必修课
  11. Realtek RTL87xx 学习资源
  12. 高频功率放大器的设计实现
  13. 【Raspberry Pi】搭建NAS流媒体播放器 + ARIA2 + YAAW + 迅雷下载系统
  14. 期货对冲套利实战知识
  15. 参数方程绘制球面、椭球面、环面_OpenGL
  16. 百合网推试爱机器人,人工智能+婚恋的起点?
  17. ElementPlus 侧边栏右侧空隙
  18. Mysql primary key主键冲突的可能性与解决方案
  19. POI和Java Excel Api导入导出----详细到你不敢相信
  20. 大牛养成指南(2):先实现一个小目标吧!10000小时理论如何轻松落地

热门文章

  1. c++制作简易中国象棋
  2. ATT格式汇编—— mov与lea的区别
  3. npm 报错:`[HPM] Error occurred while trying to proxy request (ECONNREFUSED)`
  4. Unix/Linux C++应用开发-C++变量和基本数据类型
  5. java冒泡排序内外循环_java中的冒泡排序、for循环的嵌套使用以及接口与抽象类的区别。...
  6. 怎样经营好一家汽车美容店
  7. 肾囊肿的症状表现是什么?
  8. 用selenium对svg标签的定位方法
  9. Tita OKR分享:如何进行OKR评分?
  10. python将图片转成data:image/png;base64,XXXXX