浮点数(float)与十六进制(hexadecimal)之间的转换 您所在的位置:网站首页 274转换为16进制 浮点数(float)与十六进制(hexadecimal)之间的转换

浮点数(float)与十六进制(hexadecimal)之间的转换

2024-07-16 11:34| 来源: 网络整理| 查看: 265

 

    以32位单精度浮点数为例,按IEEE 754规范的定义,使用32个位元来存储单精度二进制小数。          ---------------------------------------------------------     |   1  |        8              |     23 位长                 |     ---------------------------------------------------------     |   S  |       Exp          |     Fraction                 |     ---------------------------------------------------------     |  31  |     30至23      |    22至0位编号          |     |        |  偏正值+127  | (从右边开始为0)   |     ---------------------------------------------------------

    其中,S为符号位(0为正,1为负),Exp为指数位,Fraction为有效数位。     指数部分即使用所谓的偏正值形式表示,实际值为表示值与一个固定值(32位的情况是127)的和。     单精度的指数部分是-126~+127加上127,指数值的大小从1~254(0和255是特殊值)。     浮点小数计算时,指数值减去偏正值将是实际的指数大小。          例子:将浮点数6.91转换为十六进制数。          1、将6.91转换成二进制形式,有效位长为31(8+23)        -> 整数:6(10进制)   -- 110(2进制,实际位长为3)        -> 小数:0.91(10进制)-- 111010001111010111000(2进制,实际位长21(23-3+1))                小数转换为二进制的方法:小数部分乘以2,取整数部分依次从左往右放在小数点后,直至小数点后为0。        0.91 * 2 = 1.82 ... 1        0.82 * 2 = 1.64 ... 1        0.64 * 2 = 1.28 ... 1        0.28 * 2 = 0.56 ... 0        0.56 * 2 = 1.12 ... 1        0.12 * 2 = 0.24 ... 0        0.24 * 2 = 0.48 ... 0        0.48 * 2 = 0.96 ... 0        0.96 * 2 = 1.92 ... 1        0.92 * 2 = 1.84 ... 1        0.84 * 2 = 1.68 ... 1        0.68 * 2 = 1.36 ... 1        0.36 * 2 = 0.72 ... 0        0.72 * 2 = 1.44 ... 1        0.44 * 2 = 0.88 ... 0        0.88 * 2 = 1.76 ... 1        0.76 * 2 = 1.52 ... 1        0.52 * 2 = 1.04 ... 1        0.04 * 2 = 0.08 ... 0        0.08 * 2 = 0.16 ... 0        0.16 * 2 = 0.32 ... 0                至此,6.91的二进制为:110.111010001111010111000

    2、将原始二进制值规范化:调整使其实数的第一位大于1小于2        6.91 = 1.10111010001111010111000*2^2             3、构造浮点数的二进制原型         S: 0         Exp: 2 + 127(10进制) = 129(10进制) = 10000001(2进制)         Fraction: 10111010001111010111000 (注意:小数点前面的1不要了)              4、重新组合并由二进制转换成十六进制         0 10000001 10111010001111010111000       = 0100 0000 1101 1101 0001 1110 1011 1000       =  4    0    D    D    1    E    B    8

       即6.91的十六进制为0x40DD 1EB8



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有