[QT]浮点数转换成4个字节的十六进制(IEEE 754标准)

IEEE 754 是浮点数运算的国际标准,它定义了如何在计算机中存储和表示实数。最常见的两种格式是单精度(32位)和双精度(64位)。下面我们以 单精度(32位) 为例,讲解如何将十进制数 15.945 转换为其 IEEE 754 表示。

IEEE 754 单精度格式

符号位(S):1 位,0 表示正数,1 表示负数。

指数位(E):8 位,采用偏移量(bias)127存储,即存储值 = 实际指数 +127。

尾数位(M):23 位,存储的是规格化数的小数部分(隐含整数部分为 1)。

所以一个规格化单精度浮点数的实际值为:

计算过程

首先,我们需要将 15.945 转换为二进制形式(整数部分和小数部分分别转换)。

1.整数:

复制代码
	15÷2=7 余1
    7÷2=3 余1
    3÷2=1 余1
    1÷2=0 余1(从下往上读1111)

2.小数:采用"乘 2 取整"法,顺序读取整数位:

复制代码
	0.945 × 2 = 1.89 → 取整数 1,剩下 0.89 (bit1)
	0.89 × 2 = 1.78 → 1 (bit2)
	0.78 × 2 = 1.56 → 1 (bit3)
	0.56 × 2 = 1.12 → 1 (bit4)
	0.12 × 2 = 0.24 → 0 (bit5)
	0.24 × 2 = 0.48 → 0 (bit6)
	0.48 × 2 = 0.96 → 0 (bit7)
	0.96 × 2 = 1.92 →1 (bit8)
	0.92 × 2 = 1.84 →1 (bit9)
	0.84 × 2 = 1.68 →1 (bit10)
	0.68 × 2 = 1.36 →1 (bit11)
	0.36 × 2 = 0.72 →0  (bit12)
	0.72 × 2 = 1.44 → 1 (bit13)
	0.44 × 2 = 0.88 → 0 (bit14)
	0.88 × 2 = 1.76 → 1 (bit15)
	0.76 × 2 = 1.52 → 1 (bit16)
	0.52 × 2 = 1.04 → 1 (bit17)
	0.04 × 2 = 0.08 → 0 (bit18)
	0.08 × 2 = 0.16 → 0 (bit19)
	0.16 × 2 = 0.32 → 0 (bit20)
	0.32 × 2 = 0.64 → 0 (bit21)
	0.64 × 2 = 1.28 → 1 (bit22)
	0.28 × 2 = 0.56 → 0 (bit23)

所以 0.945 的二进制小数(前 24 位)为:

bash 复制代码
1 1 1 1 0 0 0 1 1 1 1 0 1 0 1 1 1 0 0 0 0 1 0(从上到下)

3.合并在一起就是

bash 复制代码
1 1 1 1 .1 1 1 1 0 0 0 1 1 1 1 0 1 0 1 1 1 0 0 0 0 1 0)(整数部分范围是1到2,所以小数点左移3位,小数部分取23位)所以指数是3
1.1 1 1 1 1 1 1 0 0 0 1 1 1 1 0 1 0 1 1 1 0 0 0

4.组成32位(1位符号位+8位指数位+23位尾数)

bash 复制代码
0 10000010  11111110001111010111000

5.数据拆分

bash 复制代码
0100 0001 0111 1111 0001 1110 1011 1000
4    1      7   8    1     E   B    8

所以32位数为 0x417F1EB8

相关推荐
小温冲冲3 小时前
QML vs Qt Widgets:深度对比与选型实战指南
开发语言·c++·qt
小温冲冲5 小时前
如何在Visual Studio中创建QML工程
c++·qt·visual studio
leaves falling5 小时前
Qt 项目:计算圆面积
开发语言·qt
( ⩌ - ⩌ )5 小时前
4.OpenGL纹理贴图
qt·opengl·纹理
娇娇yyyyyy6 小时前
QT编程(9): QTextEdit
前端·qt
森G8 小时前
18、QFile类---------QT基础
qt
混分巨兽龙某某9 小时前
基于ESP32与Qt Creator的WIFI空间透视项目(代码开源)
qt·嵌入式·esp32·wifi空间透视
A101693307111 小时前
QT数据库(三):QSqlQuery使用
数据库·qt·oracle
森G11 小时前
15、QT的容器类---------QT基础
qt