bit-manipulation - >、>=、<、<= 如何仅使用按位运算实现
问题描述
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
首先很难理解这是如何工作的。
解决方案
推荐阅读
- ios - CNContactPickerViewController – 仅支持 iOS/FaceTime 的联系人
- python - 分页代码不适用于注释
- triggers - ntopng:如何在不需要的流量上触发脚本?
- unicode - 如何在水晶报表 9.0 中显示 unicode 字符
- google-chrome-extension - Web 蓝牙和 Chrome 扩展:用户取消了 requestDevice() 选择器
- reactjs - 在第一页加载时从 createApi RTK 访问 localStorage
- javascript - 如何真正禁用 beforeunload?
- python - 具有恒定宽度的 tkinter 树视图
- asp.net - Dotnet JWT Bearer TokenValidationParameters 问题 - 未经授权?基于角色(策略)的授权不起作用
- javascript - 更改cefsharp winforms中的选择标签选项