当前位置: 首页 > news >正文

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

1.0 浮点数指针


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

数据在所有计算机中都是以二进制形式存储的,然后以8个位为一个单元称作“字节”,作为计
量和运算处理单元,比如我们说一个文件大小是1MB,指的是1M字节;


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


2.0 引入数据类型


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


3.0 应用案例


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类型数值并打印?

案例分析:

  1. 可以定义float *f,用它来保存数组的首地址
  2. 但是此时由于类型不匹配,需要强制类型转换
  3. 然后可以使用*f去访问这段内存空间了,调用printf函数

int main(void)
{uint8_t value[4] = {0x9A, 0x99, 0x99, 0x3F};float *f = (float *)value;printf("*f = %.1f\n",*f);return 0;
}

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

...

http://www.lryc.cn/news/496071.html

相关文章:

  • 开源的跨平台SQL 编辑器Beekeeper Studio
  • 07《缓存》计算机组成与体系结构 系列课
  • Java个人博客系统项目文档
  • 如何手动设置ubuntu服务器的ip、子网掩码、网关、DNS
  • SVN clean up失效的一种解决办法
  • S4 UPA of AA :新资产会计概览
  • 第30天:安全开发-JS 应用NodeJS 指南原型链污染Express 框架功能实现审计0
  • 关于单片机的原理与应用!
  • 什么是节点嵌入向量
  • 青海摇摇了3天,技术退步明显.......
  • url_launcher三方包的用法
  • Python 【图像分类】之 PyTorch 进行猫狗分类功能的实现(Swanlab训练可视化/ Gradio 实现猫狗分类 Demo)
  • springboot371高校实习管理系统(论文+源码)_kaic
  • Elasticsearch面试内容整理-面试注意事项
  • Python学习第十五天--魔术方法
  • 计算机的错误计算(一百七十二)
  • C/C++每日一练:合并K个有序链表
  • STM32实现HC595控制三位数码管(内含程序,PCB原理图及相关资料)
  • 《沉积与特提斯地质》
  • Android studio 签名加固后的apk文件
  • Brain.js(二):项目集成方式详解——npm、cdn、下载、源码构建
  • 关于Vscode配置Unity环境时的一些报错问题(持续更新)
  • MacOS 配置github密钥
  • 从0开始学PHP面向对象内容之常用设计模式(策略,观察者)
  • 前端 如何用 div 标签实现 步骤审批
  • 【大数据技术基础 | 实验十四】Kafka实验:订阅推送示例
  • SpringAi整合大模型(进阶版)
  • 为什么爱用低秩矩阵
  • React 自定义钩子:useOnlineStatus
  • uniapp 小程序 监听全局路由跳转 获取路由参数