C语言学习2-float内存表示/(int&)a和 (int)a

本文探讨了C语言中float类型的内存表示方式,按照IEEE754标准解释了如何将float转换为二进制,并通过实例展示了12.25在内存中的存储形式。此外,文章还详细分析了(int&)a和(int)a的区别,指出它们在特定情况下的数值相等但并不等价。
摘要由CSDN通过智能技术生成

float内存表示

float   
共计32位,折合4字节   
由最高到最低位分别是第313029、……、031位是符号位,1表示该数为负,0反之。   
30-23位,一共8位是指数位  即移码。管理小数点移动的位数
22-0位,一共23位是尾数位 即尾码。

在这里插入图片描述
注意:要保证小数点的左边只有一个1 所以会左/右移动
怎么确定float转成二进制的?
在这里插入图片描述
如下的例子:
在这里插入图片描述

对于float a = 12.25 在表示为二进制时,
上述会移动3位
左移: 127+左移的位数
右移: 127-右移的位数
因为8bit有0~255 所以中间位127 用这个来定位,IEEE规定,在float类型中,用来计算指数的偏移量为127。
如果指数实际是0,那么在内存中存的就是0+127=127的二进制
要左移三位 则127+3=130 存的就是130的二进制表示 表示为16进制即0X41440000
过程:
0 0111 1111
浮点数尾数共23位,右侧以0补全:0 0111 1111 0000 …0000
左移三位 127+3:0 1000 0010 1000 1000…00
转换为16进制为0x41440000

以下程序:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值