gpt4 book ai didi

c - 如何使用二元运算高效地执行 ==?

转载 作者:太空宇宙 更新时间:2023-11-04 04:43:25 25 4
gpt4 key购买 nike

我有兴趣找到一个 bool /算术函数,如果两个值匹配则返回 -1,如果不匹配则返回 0,换句话说 == 操作。我知道这可以通过逻辑 NOT 来完成,例如:

! (A-B)

如果 A == B,这将是 -1(= 111111111.... 在二进制中)。但问题是这会编译成一个大的右移,比如 >> 31 这是昂贵的。我希望找到可以达到相同效果的短周期二进制指令。

当用作 R 值时,== 如何编译,与 !(A-B) 相同?

最佳答案

这会有帮助吗?

#include <stdio.h>

int compare (int a, int b) {
char res[] = { 0, 0, -1};
char *p = &res[2];
return p[(a - b) ^ (b -a)];
}

main() {
printf("\nans %d \n", compare(12435, 12435));
printf("\nans %d \n", compare(221, 12435));
printf("\nans %d \n", compare(-43221, 12435));

}

顺便说一句,您可以使用 a ^ b 得到 0 表示相等

关于c - 如何使用二元运算高效地执行 ==?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23701413/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com