2-6 C浮点数指针运算案例

1.0 浮点数指针


float f= 1.2f:如何将它对应的4个字节地址空间的数值以十六进制打印出来?

数据在所有计算机中都是以二进制形式存储的,然后以8个位为一个单元称作"字节" ,作为计

量和运算处理单元,比如我们说一个文件大小是1MB,指的是1M字节;

在计算机中,每个字节都有它对应的地址,类似于门牌号CPU通过地址来访问这个字节空间


2.0 引入数据类型


对于计算机硬件系统,二进制01数据没有任何意义 ,为了有效的组织管理这些数据,人为的规
定了数据类型去解释这些二进制数据
:


3.0 应用案例


cpp 复制代码
int main(void)
{
	float f = 1.2f;
	uint8_t *p;
	p = (uint8_t *)&f;
	printf("*p = %#x.\n",*p);
	p++;
	printf("*p = %#x.\n",*p);
	p++;
	printf("*p = %#x.\n",*p);
	p++;
	printf("*p = %#x.\n",*p);
	return 0;
}

运行以上程序输出如下结果:


uint8 tvalue4={0x9A,0x99,0x99,0x3F};如何转换为float类型数值并打印?

案例分析:

  1. 可以定义float *f,用它来保存数组的首地址
  2. 但是此时由于类型不匹配,需要强制类型转换
  3. 然后可以使用*f去访问这段内存空间了,调用printf函数
cpp 复制代码
int main(void)
{
	uint8_t value[4] = {0x9A, 0x99, 0x99, 0x3F};
	float *f = (float *)value;
	printf("*f = %.1f\n",*f);
	return 0;
}

运行以上程序输出如下结果:

...

相关推荐
红宝村村长40 分钟前
windows笔记本双系统ubuntu设置
开发语言
菜鸟~noob2332 小时前
【电子战】第15篇:混合定位——TDOA/FDOA/AOA 联合【含matlab代码】
开发语言·matlab
云泽8083 小时前
STM32 USART 详解(八):C I/O 串口重定向原理与实现
c语言·stm32·嵌入式硬件
ThornArmor3 小时前
重铸1996|肉体渲染:关节的裂缝:分段模型积木拼装与未成熟的 RSP 矩阵骨骼动画形变
c语言·汇编·c++·python·硬件架构·游戏机
T1mzhou3 小时前
ARM64 Linux 6.10 内核驱动(12):dd.c:probe/ remove、延迟 probe
linux·服务器·c语言·arm开发·arm
Dreams_l3 小时前
死信队列和延迟队列介绍
java·开发语言
Zenova EdgeOS4 小时前
Python 工业边缘 redis-py 异步实战
开发语言·redis·python
君顾14 小时前
西安 24 小时自助健身房系统开发实战指南
java·开发语言·健身房
白色的北极熊4 小时前
c语言 scanf 输入流有空格,逗号 说明
c语言
Logic1015 小时前
C语言/数据结构位运算题解:异或XOR找出货船中的“独特载货量“——只出现一次的数字
c语言·数据结构·数组·位运算·时间复杂度·算法题·异或性质