我正在使用 tesseral 算术做一些工作,我需要检测单词特定区域的进位。由于程序的性质,位的位置取决于输入。例如,对于 32 位字长,假设输入 6 位,我有兴趣检查第 19 位和第 3 位的加法进位和第 31 位和第 15 位的减法(更一般地说,有趣的位是(字长- 1), (字长 / 2 + 输入位 / 2), (字长 / 2 - 1) 和 (输入位 / 2))。
我的想法是这样的:
(after addition) ((NumberToCheck & (1 << 19 + 1 << 3)) != 0) --> carried bit(s)
(or after subtraction) ((NumberToCheck & (1 << 31 + 1 << 15)) != 0) --> carried bit(s)
有更好的方法吗?