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

时间:2015-02-27 16:24:32

标签: c bit masking

我目前不熟悉C以及bitmasking和类似的东西,需要一些有关如何使用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){
}

任何有关如何简单地启动它的帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

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