繁体   English   中英

有没有办法在不使用ldexp的情况下创建浮点数?

[英]Is there any way to create a floating point number without using ldexp?

我正在尝试使用符号,指数和尾数创建一个IEEE754浮点数,但我似乎无法让ldexp()函数在我的计算机上工作,所以我想知道是否有办法通过以下方式创建该数字:直接操纵位的值。

弄乱值表示的一个标准习惯是将您的位作为intchar数组的一部分,然后将memcpy()作为您想要的类型。

请注意,通过编写union一个字段并读取另一个字段,或者通过类型处理(从一种类型转换和解除引用指针,而不是char* )来执行您所要求的操作在C ++标准下是技术上未定义的行为,因此应该要避免。 众所周知,编译器应用优化,这些优化是由假设程序不执行这些行为而导致的,并且当它们执行时会导致意外行为。

对于此处考虑的指针转换的确切实例,Clang / LLVM开发人员在博客文章中发布了这是未定义的行为,他们可能以意想不到的方式进行优化。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM