整数和浮点数在内存中存储的方式

1.整数的存储:

整数通常使用二进制补码形式存储。

对于正数,其补码就是其二进制表示;

对于负数,其补码是其绝对值的二进制表示取反后加1。

例如,考虑一个8位的整数:

  • 正数5的二进制表示为 00000101原码,反码,补码一致,这就是它在内存中的存储形式。
  • 负数5的绝对值(即5)的二进制表示为 00000101,取反后得到 11111010,再加1得到 11111011,这就是-5在内存中的存储形式。
  • 原码 0000 0101
  • 反码 1111 1010
  • 补码 1111 1011 

整数的大小和范围取决于分配给它们的位数。例如,一个8位整数可以表示的范围是-128到127,而一个32位整数可以表示的范围则要大得多。


2.浮点数的存储:

浮点数在内存中通常使用IEEE 754标准来存储。这个标准定义了浮点数的格式:包括符号位、指数和尾数(或称为有效数字)

IEEE 754标准下的浮点数通常由三个部分组成:

  • 符号位:表示浮点数的正负。
  • 指数位:用于表示浮点数的指数部分,通常是偏移形式,这样指数可以是正数或负数。
  • 尾数位:表示浮点数的有效数字或尾数。
  • 例如,一个单精度浮点数(float)通常占用32位,其中1位用于符号,8位用于指数,23位用于尾数。而双精度浮点数(double)则占用64位,其中1位用于符号,11位用于指数,52位用于尾数。

拿32位数字 3.5 作为实例吧:

3.5 二进制位: 11.1 (因为 0.5=2 的-1次方)

把他变成科学计数法: (-1)^0 × 1.11 × 2^1

 

分成三个部分:1. 符号位S(1个字节)---0

                       2.指数位E(8个字节)----1

                       3.尾数位M(23个字节)----1.11

在内存中存储时:1.指数位需要加上127,等于1+127=128转化为二进制位10000000

                          2.尾数位只存小数点后面的位,就是.11然后剩下的位补0

所以3.5在内存中存储是如图

为                      0100 0000 0110 0000 0000

转换为16进制是   40 60 00 00

我们在VS code里面调试看一下是否正确

因为是小端存放,所以是倒数

通过这种存储方式,计算机能够精确地表示和运算浮点数,尽管由于精度限制和舍入误差,有时可能会产生一些微小的偏差。

浮点数在科学计算、金融建模、图形处理等领域中广泛应用,因为它们能够表示更大范围的数值,并且具有一定的精度。然而,在进行浮点数运算时,需要注意精度损失和舍入错误的问题。


这期介绍就到这里!可以点点赞关注,你们的支持是我继续的动力!

下期介绍什么是小端,什么是大端存放?

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路过的墙颈鹿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值