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

【C语言】浮点数的原理、整型如何转换成浮点数

众所周知C语言中浮点数占四个字节,无论在32位或者64位机器上。不免会发出疑问四个字节是怎么计算出小数的呢?其实物理存放还是按照整型存放的。

IEEE 754 单精度浮点数格式

浮点数在计算机中是使用 IEEE 754 标准进行表示的。在 IEEE 754 标准中,32 位的单精度浮点数(float 类型)被分为三个部分:

符号位 (S):1 位,用来表示数值的符号,0 表示正数,1 表示负数。
指数位 (E):8 位,用来表示指数部分,并采用偏移量表示法(偏移量是 127)。
尾数位 (M):23 位,用来表示有效数字(也叫做“分数部分”),通常称为“尾数”或“有效数字”部分。

如何计算浮点数的值

浮点数的值的计算方式如下:

result = [(-1)^S]*[(2)^(E-127]*(1+M)

详细步骤:
符号位 (S):如果符号位为 0,表示正数;如果符号位为 1,表示负数。

指数位 (E):8 位的指数部分存储的是一个有偏的数值,即实际指数值 = 存储值 - 127。这个偏移量(127)允许指数表示负数和正数。

尾数位 (M):尾数部分是 23 位二进制数,存储的是一个小数部分,实际上是 1.M(1 加上尾数)。这叫做“隐含的 1”,是因为浮点数格式采用了规格化表示,即浮点数的二进制表示中总是存在一个隐式的 1。

例子:将 0xC0F46A01 转换为浮点数

假设我们有一个 32 位的整数 0xC0F46A01,它的二进制表示是:

1100 0000 1111 0100 0110 1010 0000 0001

我们可以通过memcpy函数将它传给float类型变量,所以float类型存放的数据其实和整型一样,只是float还需要经过解码。

我们可以分解它为符号位、指数位和尾数位:

符号位 (S):1(表示负数)
指数位 (E):10000001(8 位,十进制为 129)
尾数位 (M):11101000110101000000001(23 位)
根据 IEEE 754 格式:

符号位 S = 1,表示负数;
指数位 E = 129,实际指数值 = ( 129 - 127 = 2 );
尾数位 M = 11101000110101000000001,表示为 ( 1+1/2+1/4+1/8+0/16+0/32+0/64+/0/128.......)。它的值大约是 ( 0.90625 )。

根据公式result = [(-1)^1]*[(2)^2]*(1+0.90625)=-7.625(实际上,经过精确计算,尾数 ( M ) 的值更准确地是 0.9062499999999998,这个微小的差异会导致最终结果与 -7.625 略有不同)。

相关文章:

【C语言】浮点数的原理、整型如何转换成浮点数

众所周知C语言中浮点数占四个字节,无论在32位或者64位机器上。不免会发出疑问四个字节是怎么计算出小数的呢?其实物理存放还是按照整型存放的。 IEEE 754 单精度浮点数格式 浮点数在计算机中是使用 IEEE 754 标准进行表示的。在 IEEE 754 标准中&#…...

TesseractOCR-GUI:基于WPF/C#构建TesseractOCR简单易用的用户界面

前言 前篇文章使用Tesseract进行图片文字识别介绍了如何安装TesseractOCR与TesseractOCR的命令行使用。但在日常使用过程中,命令行使用还是不太方便的,因此今天介绍一下如何使用WPF/C#构建TesseractOCR简单易用的用户界面。 普通用户使用 参照上一篇教…...

Elasticsearch高性能实践

前言 本方案主要从运维层面分析es是实际生产使用过程中的参数优化,深入理解es各个名词及含义,深入分析es的使用过程中应注意的点,详细解释参数设置的原因以及目的,主要包括系统层面,参数层面。除此之外,优…...

软件测试--录制与回放脚本

准备工作 安装phpstudy 配置两个内容 放demo44文件夹 在浏览器输入http://localhost/demo44/index.html,出现如图所示的网站 输入用户名和密码 步骤一:打开Virtual User Generator,点击新建,点击new 步骤二:点击如下…...

nodejs 06.npm的使用以及package.json详解

一.npm(npm | Home)的介绍 npm(Node Package Manager)是一个node.js的包管理工具,允许用户下载安装更新分享node.js包 二.npm相关命令以及作用 1.npm init -y 这条命令主要是当项目中没有package.json这个文件的时候生成package.json这个文件 2.npm i / npm install (包名) 这条…...

如何使用WinCC DataMonitor基于Web发布浏览Excel报表文档

本文介绍使用 WinCC DataMonitor 的 "Excel Workbooks" 功能,通过 Excel 表格显示 WinCC 项目的过程值、归档变量值和报警归档消息。并可以通过 Web 发布浏览访问数据 1.WinCC DataMonitor是什么 ? DataMonitor 是 SIMATIC WinCC 工厂智能中…...

颜色的基本处理

数码相机能够获取彩色图像,但相机的色彩处理是一个非常复杂的过程,是非常重要的。 此过程生产制造商在细节方面都是不公布的,但是基本的概念是相同的。当相机捕捉一个真实场景时,是怎么还原成人眼所看到的图像呢? 1.R…...

跟李笑来学美式俚语(Most Common American Idioms): Part 66

Most Common American Idioms: Part 66 前言 本文是学习李笑来的Most Common American Idioms这本书的学习笔记,自用。 Github仓库链接:https://github.com/xiaolai/most-common-american-idioms 使用方法: 直接下载下来(或者clone到本地…...

爬虫技术简介

1、爬虫简介 爬虫(Web crawler)是一种用于自动获取网页内容的程序。它可以通过模拟浏览器访问网页,并从中提取所需的信息,如文本、图片、链接等。爬虫在互联网上进行广泛应用,用于搜索引擎的网页抓取、数据挖掘、信息收集、内容监测等领域。 2、爬虫分类 爬虫的分类有以…...

如何打开Windows10的设备管理器

如何打开Windows10的设备管理器? 01 02...

scala列表

1 不可变 List 说明 (1)List 默认为不可变集合 (2)创建一个 List(数据有顺序,可重复) (3)遍历 List (4)List 增加数据 (5&#…...

c++检查某一文件是否存在

C17及以上版本,检查文件是否存在可以使用filesystem库 如果使用的是C11或C14,标准库并没有直接提供这样的功能。 可以使用平台特定的API,例如在Windows上使用 _access 函数,或在POSIX兼容系统(如Linux和macOS&#x…...

Scala的隐式类,隐式参数和值,隐式对象

1.Scala的隐式类定义语法:implicit class 类名(参数){ } 隐式类中参数只能定义一个,参数中的源类型与目标类型一一对应,只能从一种类型转换成另一种类型,不可以一对多或多对。 //隐式类:implicit class隐式转换函…...

LabVIEW实现HTTP通信

目录 1、HTTP通信原理 2、硬件环境部署 3、云端环境部署 4、HTTP通信函数 5、程序架构 6、前面板设计 7、程序框图设计 本专栏以LabVIEW为开发平台,讲解物联网通信组网原理与开发方法,覆盖RS232、TCP、MQTT、蓝牙、Wi-Fi、NB-IoT等协议。 结合实际案例,展示如何利用LabVIEW和…...

【EXCEL】 获取多列中 不为空的那一个数据

从多个表格筛选出来的上班时间是下表这样的 我要把他们放在同一列,这样方便后续处理,合并列输入下面这个公式即可 日期不加 TEXT() 函数 转日期格式;将得到是一串数字 TEXT(TEXTJOIN(", ",TRUE,B2:F2),&qu…...

VBA API 概述 | 宏编程

注:本文为 “VBA API 概述 | 宏编程 | 执行速度慢” 相关文章合辑。 VBA API 详解 Office 二次开发于 2020-12-17 22:27:10 发布 Office 版本变动 在 Office 2010 之前,微软仅提供 32-bit 版本的 Office。而自 Office 2010 起,出现了 32-b…...

pythonOpenCV篇:0基础带你python入门之常用函数

① 二值化函数 功能:将图像转换为二值图像(黑白图像),将像素值分为两种类别:前景(白)和背景(黑)。函数:cv2.threshold()参数: src:输…...

第十七届山东省职业院校技能大赛 中职组“网络安全”赛项资源任务书样题③

第十七届山东省职业院校技能大赛 中职组“网络安全”赛项资源任务书样题③ 模块A 基础设施设置与安全加固(200分)A-1 登录安全加固(Windows, Linux)A-2 Nginx安全策略(Linux)A-3日志监控(Windows)A-4中间件…...

【每日一题 基础题】验证回文串

LCR 018. 验证回文串 验证回文串 给定一个字符串 s ,验证 s 是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写。 本题中,将空字符串定义为有效的回文串 。 验证回文串 LCR 018. 验证回文串方法一:**筛选 判断…...

【Hadoop】-- hadoop3.x default port

Hadoop 3.x 修改了一些以前常用的默认端口,完整的默认端口列表,可点击下面配置文件获取信息: core-default.xmlhdfs-default.xmlhdfs-rbf-default.xmlyarn-default.xml...

【Cadence Virtuoso】进阶:利用仿真数据反推工艺库MOSFET的λ与Vth实战

1. 为什么需要反推MOSFET参数? 刚接触TSMC 65nm工艺时,我发现PDK提供的参数表里λ和Vth都是固定值。但在实际设计电流镜和差分对时,这些"标准参数"总让我觉得哪里不对劲。后来在调试一个基准电流源时终于发现问题:PDK给…...

GitLab vs Gitea 深度解析:如何选择适合你的代码托管方案?

1. 核心定位与适用场景对比 第一次接触代码托管平台时,我和很多开发者一样在GitLab和Gitea之间纠结。经过三年在不同规模团队的实际使用,我发现这两个工具就像瑞士军刀和美工刀的关系——没有绝对的好坏,关键看你要切什么。 GitLab更像是个&q…...

【开题答辩全过程】以 校园创新创业管理系统设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…...

CK3M多轴运动控制器实战:EtherCAT总线伺服系统从零配置全解析

1. CK3M控制器与EtherCAT系统初识 第一次接触CK3M多轴运动控制器时,我完全被它强大的功能震撼到了。这款控制器就像工业自动化领域的"大脑",能够同时协调多个伺服电机精准运动。而EtherCAT总线技术则是连接这个大脑与各个执行机构(…...

Z-Image-Turbo-rinaiqiao-huiyewunv开发者教程:gc.collect()+empty_cache显存防泄漏实践

Z-Image-Turbo-rinaiqiao-huiyewunv开发者教程:gc.collect()empty_cache显存防泄漏实践 1. 项目概述 Z-Image Turbo (辉夜大小姐-日奈娇)是基于Tongyi-MAI Z-Image底座模型开发的专属二次元人物绘图工具。该工具通过注入辉夜大小姐(日奈娇)微调safetensors权重&am…...

老Mac升级指南:使用OpenCore Legacy Patcher让旧设备焕发新生

老Mac升级指南:使用OpenCore Legacy Patcher让旧设备焕发新生 【免费下载链接】OpenCore-Legacy-Patcher 体验与之前一样的macOS 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 随着苹果对旧款Mac的系统支持逐渐终止&#xff0…...

字节MidScene 手机自动化

1 框架介绍 Midscene 是一个可通过自然语言描述目标和步骤,自动规划并操作用户界面、执行自动化的框架。 框架地址:https://midscenejs.com/zh/支持端:Android、iOS、鸿蒙、桌面、浏览器核心特性 自然语言控制跨平台自动化同时支持智能执行…...

BoltDB vs Redis 读性能对比:实测表现与原理差异

一、前言 BoltDB(bbolt)与 Redis 都是高并发场景下常见的键值存储,但存储架构、存储介质、并发模型完全不同,导致两者在读性能、延迟、并发扩展性上呈现巨大差异。 本文从原理、延迟、并发读能力、资源开销四个维度对比两者的读性…...

搞懂 SAP Fiori 中的 RFC 连接:把后端系统、系统别名与 Launchpad 运行链路一次讲透

在很多 SAP Fiori 项目里,团队把注意力都放在 SAPUI5、OData、Fiori Elements、语义对象导航这些能力上,却常常在集成经典应用时踩坑。真正到了项目上线阶段,用户不会关心应用是 SAPUI5、Web Dynpro ABAP,还是 SAP GUI for HTML 实现的,他们只会问一句:为什么在 SAP Fior…...

3分钟快速上手:text-generation-webui大模型本地部署完全指南

3分钟快速上手:text-generation-webui大模型本地部署完全指南 【免费下载链接】text-generation-webui A Gradio web UI for Large Language Models. Supports transformers, GPTQ, AWQ, EXL2, llama.cpp (GGUF), Llama models. 项目地址: https://gitcode.com/Gi…...