这个逻辑函数是什么?
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
.
最后,如果使用 ==
比较二进制 ...0001
和 0
,则值不同,因此 ==
运算符的结果将是 0
.
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
.
最后,如果使用 ==
比较二进制 ...0001
和 0
,则值不同,因此 ==
运算符的结果将是 0
.