我目前是 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/