我有一个小功能,在某一点上我除以0并创建了我的第一个NaN。在互联网上查看后,我确实找到了NaN - 而不是数字和NaN!= NaN。
我的问题是:
在运行期间如何保存NaN或控制器如何知道变量具有NaN值?(我正在使用小型微控制器(c语言),机制在运行的程序中有所不同一台电脑(c#和其他OOP语言))?
Inf类似于NaN?
答案 0 :(得分:3)
在C中,值的类型由源代码静态确定。对于命名对象(“变量”),您可以显式声明类型。对于常量,它们的语法(例如,3
与3.
)确定类型。在通用处理器上编译为机器代码的典型C实现中,处理器具有用于处理整数和浮点的不同指令。编译器对整数使用整数指令,对浮点值使用浮点指令。浮点指令在硬件中设计用于处理浮点值的编码。
在IEEE-754二进制浮点中,浮点数据使用符号位,指数字段和有效位字段进行编码。如果指数字段全部为1且有效数字段不是全零,则该数据表示NaN。在常见的现代处理器中,这是内置于硬件中的。
Infinity在很大程度上与NaN相似。它们可能都被认为是特殊的,因为它们不是正常数字,并且处理方式与正常数字有些不同。但是,在IEEE-754算术中,无穷大是一个数字并参与算术运算。 NaN不是一个数字。