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 tvalue[4]={0x9A,0x99,0x99,0x3F};如何转换为float类型数值并打印?
案例分析:
- 可以定义float *f,用它来保存数组的首地址
- 但是此时由于类型不匹配,需要强制类型转换
- 然后可以使用*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;
}
运行以上程序输出如下结果:
...