相关疑难解决方法(0)

在C中翻转双/浮点符号的最快方法

在C中翻转双(或浮点)符号的最快方法是什么?

我想,直接访问符号位将是最快的方法,并找到以下内容:

double a = 5.0;
*(__int64*)&a |= 0x8000000000000000;
// a = -5.0

float b = 3.0;
*(int*)&b |= 0x80000000;
// b = -3.0
Run Code Online (Sandbox Code Playgroud)

但是,上述内容不适用于负数:

double a = -5.0;
*(__int64*)&a |= 0x8000000000000000;
// a = -5.0
Run Code Online (Sandbox Code Playgroud)

c floating-point double bit-manipulation sign

10
推荐指数
3
解决办法
1万
查看次数

标签 统计

bit-manipulation ×1

c ×1

double ×1

floating-point ×1

sign ×1