我有一种情况,我正在对大量行进行计算,如果我可以避开条件语句,我可以真正提高性能.
我需要的是给定的正,零或负整数我想分别得到结果1,0,-1.
所以,如果我这样做col/ABS(col),我将获得1为正数,-1为负数,但当然如果col等于0,那么我将得到一个错误.我不能得到错误.
这看起来很简单,但我无法绕过它.
假设两个补码32位整数,或者一个补码没有负零担心,那么下面的效果很好:
(x>>31) - (-x>>31);
Run Code Online (Sandbox Code Playgroud)
更换31用63的64位整数,等等.