【发布时间】:2014-10-26 11:13:37
【问题描述】:
我想做浮点数据的二进制补码。
unsigned long Temperature ;
Temperature = (~(unsigned long)(564.48))+1;
但问题是演员丢失了信息,564 而不是 564.48。 我可以在不丢失信息的情况下进行二进制补码吗?
【问题讨论】:
-
564.48是一个double,转换为unsigned long会将其截断为564。你期待什么? -
memcpy 浮点值到 unsigned long 然后应用二的组件。或者将 union 与 float 和 unsigned long 一起使用,将 564.48f 分配给 float,并将 two 的组件应用于 unsigned long。
-
您实际上需要做什么?对浮点数据执行二进制补码是没有意义的,它不会以任何方式有用。
-
您知道
-564,48是有效值的温度标度不存在吗? -
@bitmask:通过 memcpy 和联合的类型双关语是明确定义的(除非陷阱表示);在 C99 的(非规范性)附件中错误地将您未写信给工会成员的信息列为未指定行为;这已用 C11 更正
标签: c casting twos-complement