这个逻辑函数是什么?

What is this logic function?

u 和 v 是无符号整数

for (shift = 0; ((u | v) & 1) == 0; ++shift)
        {
                u >>= 1;
                v >>= 1;
        }

我无法理解((u | v) & 1) == 0逻辑,如果u = 9和v = 10,逻辑函数return会是什么。

如果u = 9,那么u的二进制位表示就是...1001.

如果v = 10,那么v的二进制位表示就是...1010.

如果您使用 | 二进制或这些值,您将得到 ...1011

如果你现在用二进制和上面的值1(即二进制...0001),你会得到...0001.

最后,如果使用 == 比较二进制 ...00010,则值不同,因此 == 运算符的结果将是 0.