IEEE

您所在的位置:网站首页 c语言的16进制 IEEE

IEEE

2024-07-09 20:43| 来源: 网络整理| 查看: 265

1.IEEE-754标准 1.1概述

IEEE二进制浮点数算术标准(IEEE 754)是20世纪80年代以来最广泛使用的浮点数运算标准,为许多CPU与浮点运算器所采用。这个标准定义了表示浮点数的格式(包括负零-0)与反常值(denormal number)),一些特殊数值(无穷(Inf)与非数值(NaN)),以及这些数值的“浮点数运算符”;它也指明了四种数值舍入规则和五种例外状况(包括例外发生的时机与处理方式)。

IEEE 754规定了四种表示浮点数值的方式:单精确度(32位)、双精确度(64位)、延伸单精确度(43比特以上,很少使用)与延伸双精确度(79比特以上,通常以80位实现)。只有32位模式有强制要求,其他都是选择性的。大部分编程语言都有提供IEEE浮点数格式与算术,但有些将其列为非必需的。例如,IEEE 754问世之前就有的C语言,有包括IEEE算术,但不算作强制要求(C语言的float通常是指IEEE单精确度,而double是指双精确度)。

该标准的全称为IEEE二进制浮点数算术标准(ANSI/IEEE Std 754-1985),又称IEC 60559:1989,微处理器系统的二进制浮点数算术(本来的编号是IEC 559:1989)。后来还有“与基数无关的浮点数”的“IEEE 854-1987标准”,有规定基数为2跟10的状况。最新标准是“ISO/IEC/IEEE FDIS 60559:2010”。

1.2标准详解 2.代码

单精度浮点数float和16进制的相互转换,话不多说,直接上代码:

// float转16进制 // 简单点写就是printf("%x\n",*(unsigned int *)&fvalue); unsigned int flo_hex(float fvalue) { float temp = fvalue; unsigned int *hvalue; hvalue = (unsigned int *)&temp; printf("%X\n",*hvalue); return *hvalue; } // 16进制转float // 简单点写就是printf("%f\n",*(float *)&hvalue); float hex_flo(unsigned int hvalue) { unsigned int temp = hvalue; float *fvalue; fvalue = (float *)&temp; printf("%f\n",*fvalue); return *fvalue; } int main() { /* //float转16进制 float b; scanf("%f",&b); printf("%f\n",b); printf("%x\n",*(unsigned int *)&b); flo_hex(b); */ //16进制转float unsigned char c[8]; unsigned int d; for(int i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3