0

假设 A 和 B 是我的低 32 位整数,而 T 是一个 32 位整数,我想表示将 A 和 B 相加的进位。我将一些快速逻辑放在一起得到 T:

T = (A >> 1) + (B >> 1);
T += A & B & 1;
T >>= 31;

它有效,但我不喜欢执行此操作所需的操作数量(3 次右移,2 次加法,2 次加法)。我真的很感谢一些有趣的专家就如何使这个更清洁/更高效的意见。谢谢!

对于我目前的问题,我仅限于在 HLSL 中可以做的事情。我不介意 SM4 和 SM5 特定的解决方案,但我也愿意接受一般可以工作的东西。

4

1 回答 1

1

这里的技术会起作用吗:使用进位标志进行有效的 128 位加法

S = A + B;
T = (S < A);

我假设比较结果为 1 或 0,就像在 C 中一样。如果不是,请添加?1:0到语句的末尾。

于 2015-06-15T19:45:09.367 回答