如何使用位运算将整数变量归一化为正负或零

How to normalize Integer variable to positive negative or zero with bit operations

7 -> 1
0 -> 0
-7 -> -1

我有密码:

(x == 0 ? 0 : x / abs(x)) + 1

但是是否可以避免除法并使其更快?

怎么样

(x == 0 ? 0 : (x < 0 ? -1 : 1))

想法是使用位操作来避免分支代码或值转换。 还没有找到如何用位操作来做,但苹果已经添加了这个功能

https://developer.apple.com/documentation/swift/int/2886673-signum

signum()
Returns -1 if this value is negative and 1 if it’s positive; otherwise, 0.

如此简单)原始测试显示 ~x100 更快的实现