gpt4 book ai didi

c - C 中的位操作和标志测试

转载 作者:行者123 更新时间:2023-12-02 07:21:12 25 4
gpt4 key购买 nike

假设我有两个 int 类型的变量,ab,以及一个标志 F

#define F <something>

int a = <something> ;
int b = <something> ;

有什么简单的方法可以测试 ab 是否都有标志 F,或者它们都没有?

为了测试他们是否都拥有它,我可以使用类似的东西:

if ( a & b & F )

要测试他们是否都没有,我可以使用类似的东西:

if ( !((a & F) || (b & F)) )

整个测试变成:

if ( (a & b & F) &&  !((a & F) || (b & F)) )

但这看起来太长太复杂了。有没有更简单的解决方案?

最佳答案

“他们都没有”的测试可以是

!((a | b) & F)

合并标志,屏蔽和翻转逻辑。


整个测试可以用异或来写。 (感谢 Martin James 的想法)

!((a ^ b) & F)

这意味着“不(恰好 ab 之一有 F)”

关于c - C 中的位操作和标志测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45771858/

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