c语言初识-整型提升、浮点数存储

文章详细阐述了整型提升的概念,由于CPU计算通常基于int类型,导致更小的类型在运算时被提升。接着,重点讲解了浮点数的存储方式,包括符号位、有效数字和指数位,以及它们在内存中的表示,如float和double类型的差异。以float存储5.5为例,展示了转换的步骤。最后,提到了解析内存中浮点数的方法,包括对不同E值的处理情况。
摘要由CSDN通过智能技术生成

目录

整型提升

 浮点数存储

float存入的内存划分:

实列:  float 5.5在内存中的存储


整型提升

因为CPU的计算长度为int,所以比int短的类型都是被整型提升的对象;

整型提升的填充以符号位填充;

参与表达式计算,便会进行整型提升;

 浮点数存储

符号位:S     S为0   表示正数,  S为1  表示负数

有效数字:M   (1<m<2)    存入内存中时,我们会省略1;列入1.0001;存入0001;

指数位:E    1.将m的小数点推至剩一位(1.xxxx),乘上对应的 指数

                        例如1000.1 =》 1.0001 * 2^3    E=3

                      2.当E存入内存中时,其需要保持unsinged的类型,因此需要加上对应的修正值  

                        float:E+127

                        double: E+1023

float存入的内存划分:

double存入的内存划分

实列:  float 5.5在内存中的存储

第一步:

        5.5为正 ;其符号位的表达式为 (-1)^0     =>  S = 0

第二步:

        5  的二进制  00000101       0.5  的二进制  0.1               最终为:00000101.1

第三步:

          M = 1.011 * 2^2     =>  E = 2   

         因为为float类型加上127修正值    M=127+2=129的二进制: 100000001     

第四步:得  S     M             E

                     0 10000001   011000000000000000

将内存中的浮点数取出来:

E会有三种情况:1.E不全为0或者不全为1;  那便直接减去对应的修正值便可;

                            2.E全为0; 此时浮点数是一个无限接近于0的值,M(1.xxxx)也不再取1

                            3.E全为1;有效数字全为0,表示正负无穷大;  正负取决于符号位(S)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值