首页 > 解决方案 > >、>=、<、<= 如何仅使用按位运算实现

问题描述

我已经看到了 thisthis,至少从中>获得了:

int isGt(int a, int b)
{
    int diff = a ^ b;
    diff |= diff >> 1;
    diff |= diff >> 2;
    diff |= diff >> 4;
    diff |= diff >> 8;
    diff |= diff >> 16;

    //1+ on GT, 0 otherwise.
    diff &= ~(diff >> 1) | 0x80000000;
    diff &= (a ^ 0x80000000) & (b ^ 0x7fffffff);

    //flatten back to range of 0 or 1.
    diff |= diff >> 1;
    diff |= diff >> 2;
    diff |= diff >> 4;
    diff |= diff >> 8;
    diff |= diff >> 16;
    diff &= 1;

    return diff;
}

我想知道 , 和 的等价物是什么>=<通常<=是对它如何/为什么工作的简短描述。我试图自己弄清楚它们,但isGt首先很难理解这是如何工作的。

标签: bit-manipulationcomparison-operators

解决方案


推荐阅读