the*_*epi 4 c c++ assembly gcc ieee-754
我想弄清楚如果浮点数是QNAN或SNAN如何打印出来.我已经将这些位分离为signBit exponentBit和FractBits.
unsigned int sign = (i & 0x80000000) >> 31;
unsigned int exponent = (i & 0x7f800000) >> 23;
unsigned int fraction = (i & 0x007FFFFF);
printf("signBit %d, expBits %d, fractBits 0x%08X\n",sign, exponent, fraction);
Run Code Online (Sandbox Code Playgroud)
宏:
int issignaling (float-type x)初步:| MT-Safe | AS-Safe | AC-Safe | 请参阅POSIX安全概念.
如果x是信令NaN(sNaN),则该宏返回非零值.它基于TS 18661草案,目前作为GNU扩展启用.
TS的最终草案提到您可能需要选择使用宏来获取它:
Run Code Online (Sandbox Code Playgroud)#define __STDC_WANT_IEC_60559_BFP_EXT__ #include <math.h> int issignaling(real-floating x);
浮点实数的格式取决于处理器。在 x86 / x86-64 ISA 上,有效数的最高位 = 1 表示安静,0 表示信令。(其余的 NaN 负载仍然是任意的)。