gpt4 book ai didi

c# - 对负整数返回零

转载 作者:太空狗 更新时间:2023-10-29 18:00:48 26 4
gpt4 key购买 nike

一个 friend 只是扔了一些类似于下面的C#代码的代码:

int i = ...;
return i < 0 ? 0 : i;

这让我想到了。有任何“不同”的方式来为负整数或当前正值返回零吗?更具体地说,如果可能的话,我正在寻找按位运算。

顺便说一句,我知道 Math.Max(0, i);

最佳答案

Math.Max 有什么问题?

可以使用按位运算在没有分支的情况下执行等效操作:

r = x ^ ((x ^ y) & -(x < y)); // == max(x, y)

如果您替换为零,它会折叠为:

r = (y & -(0 < y)); // == max(0, y)

(来源:位技巧的 this list。)

如果分支在您的平台上非常昂贵,我想这在某些内部循环中可能是值得的,但它非常晦涩,不是我希望在 非常 时间敏感函数。

关于c# - 对负整数返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1683029/

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