gpt4 book ai didi

c - 按位 AND 运算符在 C 和 C++ 中是可传递的吗?

转载 作者:太空宇宙 更新时间:2023-11-04 00:23:26 25 4
gpt4 key购买 nike

我有一个问题:按位与运算是否具有传递性,尤其是在 C 和 C++ 中?

res=(1 & 2 & 3 & 4) , 这和 res1=(1&2) 一样吗和 res2=(3&4)res= (res1 & res2) .这会一样吗?

最佳答案

是的,按位 AND 是可传递的,因为您已经使用了该术语。

将事物想象成一堆比特也许更容易。所以如果我们有四个 4 位数字,我们可以这样做:

A = 0xB;
B = 0x3;
C = 0x1;
D = 0xf;

如果我们简单地将它们堆叠起来:

A    1 0 1 1
B 0 0 1 1
C 0 0 0 1
D 1 1 1 1

然后按位 AND 的结果一次查看一列,当且仅当该列中的每一行都有一个 1 时,该列产生一个 1,所以在上面的例子中,我们得到:0 0 0 1,因为最后一列是唯一一列。

如果我们把它分成两半得到:

A    1 0 1 1
B 0 0 1 1
A&B 0 0 1 1

和:

C    0 0 0 1
D 1 1 1 1
C&D 0 0 0 1

然后那些中间结果:

A&B 0 0 1 1 
C&D 0 0 0 1
End 0 0 0 1

我们的结果仍然是相同的——任何列中有零的地方,都会在中间结果中产生一个零,这将在最终结果中产生一个零。

关于c - 按位 AND 运算符在 C 和 C++ 中是可传递的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52489313/

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