You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

何时通过单字节XOR逻辑判断两值同号比乘法实现更快?

判断两数同号的两种宏实现对比

判断两个数是否同号时,可采用以下两种宏定义实现方式:

1. 乘法实现的宏

#define same_sign(a,b) ((a)*(b)>=0)

编辑补充:最初代码存在错误,已将>替换为>=。

2. 单字节XOR逻辑实现的宏

#define INTEL_REVERSED//示例宏,用于指定变量在内存中是否以逆序存储

#ifdef INTEL_REVERSED
    #define same_sign(a,b) ((~(*((char*)&a+sizeof(a)-1)^*((char*)&b+sizeof(b)-1))&0x80)>>7)
#else
    #define same_sign(a,b) ((~(*(char*)&a^*(char*)&b)&0x80)>>7)
#endif

性能与适用场景分析

  • 何时XOR实现更快:乘法运算的时间复杂度介于O(n log n)与O(n²)之间(当数值长度超过4字节时),而逻辑运算的耗时是固定的。因此当操作的数值类型长度超过4字节时,第二种XOR逻辑实现会比乘法实现更快。
  • 适用范围差异:
    • 乘法实现仅支持整数类型(包含double、float),但可以接收表达式作为参数;
    • XOR逻辑实现可适配任意数据类型,但仅支持变量作为参数,无法直接传入表达式。

内容的提问来源于stack exchange,提问作者markoj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 10:10:29