32位浮点型存放到2个16位int16_t变量

本文介绍如何将float型变量拆分为两个16位整数,并演示如何精确组合回原始float值,通过实例解析1.234的16进制表示并实现转换过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

float型变量在内存中占4个字节(共32位)。

有的时候,我们需要将float型变量拆分成2个16位变量。并且要求能够将这2个16位变量进行还原。

C/C++核心代码如下:

	/*这是要被拆分的float型变量*/
    float a = 1.234;
    
    /*1 拆分*/
    int16_t *pa1 = (int16_t *)(&a);		//获得a前16位地址
    int16_t *pa2 = pa1+1;		//获得a后16位地址

	/*定义一个同类型对象,用来接收组合后的结果*/
    float b = 0.0;
    int16_t *pb1 = (int16_t *)(&b);
    int16_t *pb2 = pb1+1;

	/*2 组合*/
    *pb1 = *pa1;	//将a前16位地址的内容(2进制码)复制给pb1指向的内存空间。
    *pb2 = *pa2;	//将b前16位地址的内容(2进制码)复制给pb2指向的内存空间。

	/打印结果/
    printf("组合结果:b = %f\n",b);		//组合结果:b = 1.234

图解分析:
10进制的1.234转化位16进制结果位:3F 9D F3 B6
10进制浮点数转换位16进制
2进制形式

赋值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值