c - C 中用于检查位的简单位掩码方法

标签 c bit masking

我目前是 C 以及位掩码和类似东西的新手,需要一些关于如何使用 3 种方法制作程序的知识,这些方法检查是否设置了位然后操作它,方法是 -

INSET:此函数有两个参数,当前信号掩码和信号编号,如果相应信号在当前集中则返回 1,否则返回 0。

ADDSET:此函数还获取当前信号掩码和信号编号,并将相应的信号添加到当前信号集中(即,将相应位位置的位设置为 1)。请注意,您必须将当前信号掩码的地址传递给此函数,因为它会修改其内容。

DELSET:该函数以当前信号掩码和信号编号为参数,从当前信号集中删除相应的信号。请注意,您还必须将当前信号掩码的地址传递给此函数,因为它将修改其内容。

几乎我知道必须在方法 INSET 中设置 if 语句,但老实说,到目前为止我所写的是这样的:

int INSET(unsigned char signalmask, int SIGNUM){
    if (SIGNUM)
        { ... }
}

void ADDSET(unsigned char *signalmask, int SIGNUM){
}

void DELSET (unsigned char * signalmask, int SIGNUM){
}

任何有关如何简单地开始它的帮助将不胜感激。

最佳答案

问题是确定位 N 是否已设置。您可以使用 1 << n将一个位移到位置 n(假设 LSB 为位置 0),然后按位与(& &&)以查看是否在掩码中设置了该位。

关于c - C 中用于检查位的简单位掩码方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28769681/

相关文章:

c - 当 C 函数指针具有 void 参数时,这意味着什么?

c - 位域的设置和重置

php - 如何将自定义掩码应用于 Python 中的一串数字?

c - strtok 与字符串终止相关的段错误

c - 使用 -L 选项后动态链接器给出 "cannot open shared object file: No such file or directory"

从 system() 更改为 exec(),它会加速我的代码吗?

c - 位填充 (C)

c - uint32_t 的位符号 -1 而不是 C 中的 1

javascript - 使用 jquery 屏蔽电话号码 - 具有三个输入字段

javascript - 使用 jQuery/meioMask 提交未屏蔽的表单值