1. 整数在内存中的存储

  • 整数的2进制表示有三种方法:原码、反码、补码
  • 有符号的整数都有符号位和数值位,符号位‘0’表示正,‘1’表示负
  • 整数在内存中都是以补码形式存储,原因是使用补码可以将数值位和符号位统一处理,对只有加法器的CPU来说,不需要其他硬件电路就能实现加减法

2. 大小端字节序和字节序判断

  • 大端存储模式
  • 指的是一个数据的低位字节的内容保存到内存的高地址处,而数据的高位字节内容则保存在内存的低地址处
  • 小端存储模式
  • 指的是一个数据的低位字节的内容保存到内存的低地址处,而数据的高位字节内容则保存在内存的高地址处

  • 举个简单的例子

在这里插入图片描述


  • 那么大端字节序存储呢?

在这里插入图片描述


  这里需要注意的是,数据在内存中是以二进制进行存储的,而这里的四个字节内容11 22 33 44,是在内存中的地址中以二进制的形式进行存储

  • 如何判断大小端字节序呢?
    在这里插入图片描述

3. 整数存储练习

3.1 练习1

在这里插入图片描述


在这里插入图片描述


  • 类型的作用
  • 1.申请内存空间的大小
  • 2.类型决定了看待内存中数据的视角

3.2 练习2

在这里插入图片描述


在这里插入图片描述


3.3 练习3

在这里插入图片描述


在这里插入图片描述


3.4 练习4

在这里插入图片描述


在这里插入图片描述


3.5 练习5

在这里插入图片描述


在这里插入图片描述


4. 浮点数在内存中的存储

4.1 浮点数存的过程

  • 浮点数的类型一般是float、double、long double
  • 国际标准iEEE(电气和电子工程协会)规定,任意一个二进制浮点数V可表示为:
  • V = (-1) ^ S * M * 2 ^ E
  • M表示有效数字,且M是大于等于1的,且小于2
  • (-1)^S表示符号位,S等于0表示V为正数,S等于1表示V为负数
  • 2^E是指数位

  什么意思呢?接下来举个例子来帮助我们理解
在这里插入图片描述


  • 那么浮点数是如何在内存中进行存储呢???
  • 对于32位的浮点数(float),最高的1位存储符号位S,接着8位存储指数E,剩下的23位存储有效数字M
  • 对于64位的浮点数(double),最高的1位存储符号位S,接着11位存储指数E,剩下的52位存储有效数字M
  • float E(真实值)+ 127(中间值)
  • double E(真实值)+ 1023(中间值)

在这里插入图片描述


在这里插入图片描述


  举个例子
在这里插入图片描述


4.2 浮点数取的过程

  • 对于S,直接取出来即可,对于M,则是取出来前面补1
  • 指数E取出有三种情况
  • 指数E不全为0或不全为1
  • 这时,指数E的计算值减去127(或1023),得到真实值,再将有效数字M前加上第一位的1

在这里插入图片描述


  • 指数E全为0
  • 这时,指数E等于1-127(或者1-1023)即为真实值,有效数字M不再加上前面的1,而是直接还原成0.xxxxxx的小数,这样是为了表示±0,以及接近0的无限小的数

  • 指数E全为1
  • 这时,如果有效数字M表示0,表示±无穷大(政府取决于符号位S)

  举例
在这里插入图片描述

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部