gpt4 book ai didi

language-agnostic - 按位检查标志是否存在

转载 作者:行者123 更新时间:2023-12-03 13:48:20 26 4
gpt4 key购买 nike

是否有一种通常用于检查 int/other 数据类型中是否存在标志的方法?我想出了这样的事情:

if ((host&flagtocheckfor)==flagtocheckfor)

哪个工作正常 - 但是这是设置标志的常用方法,这是通常检查标志的方式吗?或者有更简洁的方法吗?

最佳答案

在大多数支持位标志的语言中,这正是检查位标志的方式。

例如:

#define BIT_7 0x80
#define BITS_0_AND_1 0x03

if ((flag & BIT_7) == BIT_7) ...
if ((flag & BITS_0_AND_1) == BITS_0_AND_1) ...

虽然您可以使用以下方法检查类似第一个的内容:
if ((flag & BIT_7) != 0) ...

这实际上不适用于第二个,因为如果设置了任一位,而不是同时设置,它将返回 true。

为了完整起见,C 允许您设置位掩码:
flag = flag | BIT_7;   // or you can also use 'flag |= BIT_7'

您可以使用以下方法清除它们:
flag = flag & (~BIT_7);

并切换它们:
flag = flag ^ BIT_7;

关于language-agnostic - 按位检查标志是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7815781/

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