对于仅包含数学的整数,获得1,0,-1为正,零或负

Dan*_*nez 1 algorithm

我有一种情况,我正在对大量行进行计算,如果我可以避开条件语句,我可以真正提高性能.

我需要的是给定的正,零或负整数我想分别得到结果1,0,-1.

所以,如果我这样做col/ABS(col),我将获得1为正数,-1为负数,但当然如果col等于0,那么我将得到一个错误.我不能得到错误.

这看起来很简单,但我无法绕过它.

Jon*_*nna 5

假设两个补码32位整数,或者一个补码没有负零担心,那么下面的效果很好:

(x>>31) - (-x>>31);
Run Code Online (Sandbox Code Playgroud)

更换3163的64位整数,等等.