整数及浮点数在内存中的存储

整数的存储:

     计算机中的整数有三种表示方法:原码、反码、补码。整数都是用其补码存储内存中。其中正数的原反补码相同,负数的原反补需进行转换,转换规则如下:

反码是将原码的符号位不变,其余二进制位按位取反。

补码是反码的二进制位+1.。

为什么整数存储在内存中的是补码形式?

     因为在进行加减法的时候,cpu只能处理加法而不能处理减法计算(cpu只有加法器),并且原码和反码转换方式相同,不需要额外的硬件电路。

大端小端的介绍:

     当我们知道整数是用补码存进内存的,那它是怎么被存进内存的呢?现在我要向大家介绍一下大端存储和小端存储的概念,告诉大家它是怎么被存储进去的。

    大端:低位字节序存储在内存地址的高地址处,高位字节序存储在内存地址的低地址处 。                小端:低位字节序存储在内存地址的低地址处,高位字节序存储在内存地址的高地址处。

 

    此时我的机器的中a的值是倒着存的,低位字节序存储在内存地址的低地址处,所以是小端存储。

浮点数的存储:

   

根据国际标准 IEEE (电气和电子工程协会) 754 ,任意一个二进制浮点数 V 可以表示成下面的形式:
(-1)^S * M * 2^E
(-1)^S 表示符号位,当 S=0 V 为正数;当 S=1 V 为负数。
M 表示有效数字,大于等于 1 ,小于 2
2^E 表示指数位。
先储存S,在存储E,最后存储M。
对于 32 位的浮点数,最高的 1 位是符号位 s ,接着的 8 位是指数 E ,剩下的 23 位为有效数字 M
对于 64 位的浮点数,最高的 1 位是符号位s,接着的 11 位是指数 E ,剩下的 52 位为有效数字 M
我给大家举个例子:十进制的5.0,转化成二进制就是101.0,也就是1.01*2^2,其中s=0,E=2,M=1.01。
S比较简单,当你的整数为正数时最高位存储0,当为负数时最高位存储1。
M的存储是去掉首位的1,其余数字存储到内存中,不够的位补0。读取的时候再把1加上。
E较为复杂,当你的机器为32位时,用E的真实值+127,再将得到的值转化为二进制位存储到内存中去。当你的机器为64位时,用E的真实值+1023, 再将得到的值转化为二进制位存储到内存中。
当E全为0时,它表示的数是非常非常接近于0的数字,真实值为1-127。 有效数字M不再加上第一位的1,而是还原为0.xxxxxx的小数。
当E全为1时,它表示无穷大的数字。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值