如何使用位运算将整数变量归一化为正负或零
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 更快的实现
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 更快的实现