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. Datawhale面经项目来了!
  2. 2015-04-22记录--一些JS疑惑
  3. 10分钟教你看懂mongodb的npm包
  4. 12伏的蓄电池有几个单格组成_福建汤浅蓄电池ups电源机房一体化
  5. c++椭圆最小二乘法原理_c++ 椭圆拟合之最小二乘法(图像处理)
  6. [多线程系列]多线程之java线程池架构分析
  7. python 表格模块 prettyTable 简单使用
  8. 将netcat-openbsd替换成为netcat-traditional
  9. c#中使用BackgroundWorker
  10. 使用pyQt5 + agora + leanCloud实现基于学生疲劳检测的在线课堂
  11. Maven整合SSH项目(六)
  12. 语音处理:霍夫曼编码算法原理分析
  13. DVWA靶机-存储型XSS漏洞(Stored)
  14. 关于oneway void
  15. 亚马逊跨境电商开店注册流程之日本,澳洲,印度,中东,新加坡,巴西,土耳其
  16. idea创建父子工程module_在IDEA中创建父工程和子模块module的方法步骤
  17. Android利用谷歌地图获取并解析经纬度对应的地理位置
  18. bochs运行xp_简单教程:Bochsxp镜像超级简化版安装教程
  19. Linux系统管理上机作业1
  20. docker镜像的分层理解,大白话跟你讲

热门文章

  1. [附源码]JSP+ssm计算机毕业设计高校教材管理平台的设计与实现4boq6【源码、数据库、LW、部署】
  2. R语言-图形-箱型图,直方图(barplot函数与hist函数)
  3. 数字图像处理实验(三)|图像增强{归一化直方图imhist(f)/numel(f)、直方图均衡化histeq、生成线性空间滤波fspecial、中值滤波medfilt2}(附matlab实验代码截图)
  4. 微信H5网页自动播放背景音乐
  5. rtorrent初探--利用好你的云主机
  6. Python绘制loss曲线、准确率曲线
  7. 雷迪RD8200管线探测仪参数/管线仪使用方法/管线仪说明书
  8. hadoop使用之 scp (secure cp)安全拷贝
  9. FX3U源码PLSR加减速/三菱FX3UPLC生产方案
  10. oracle ipcs mt,Oracle Study之--IPCS管理共享内存