我想弄清楚如果浮点数是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);
答案 0 :(得分:8)
GNU provides设施recently standardized:
宏:
int issignaling (float-type x)
初步:| MT-Safe | AS-Safe | AC-Safe |请参阅POSIX安全概念。
如果x是信令NaN(sNaN),则此宏返回非零值。它基于TS 18661草案,目前作为GNU启用 扩展
TS的最终草案提到您可能需要选择使用宏来获取它:
#define __STDC_WANT_IEC_60559_BFP_EXT__ #include <math.h> int issignaling(real-floating x);
答案 1 :(得分:2)