📜  查找,设置,清除,切换和修改C中的位(1)

📅  最后修改于: 2023-12-03 15:40:25.864000             🧑  作者: Mango

查找,设置,清除,切换和修改C中的位

在C语言中,我们可以用位运算符来处理变量的位级别的操作。通过位运算符,我们可以查找,设置,清除,切换和修改C中的位。

查找某一位的值

我们可以使用&运算符将变量与一个数值进行与运算,来查找该变量对应位的值。如下例子,查找num的第3位的值:

unsigned char num = 0b10100101;
unsigned char bit = (num >> 2) & 1; // bit = 1

以上例子我们先将num右移2位,即num的第3位移到最低位,然后将其与1进行与运算,就可以得到该位的值。

设置某一位为1

我们可以使用|运算符将变量与一个数值进行或运算,来设置该变量对应位为1。如下例子,将num的第5位设置为1:

unsigned char num = 0b10010101;
unsigned char bit = 0b00100000;
unsigned char result = num | bit; // result = 0b10110101

以上例子我们先定义一个数值bit,该数值只有第5位为1。然后将num与该数值进行或运算,就可以将num的第5位设置为1了。

设置某一位为0

我们可以使用&运算符将变量与一个数值进行与运算,来清除该变量对应位为0。如下例子,将num的第3位设置为0:

unsigned char num = 0b10100101;
unsigned char bit = ~(1 << 2); // bit = 0b11110111
unsigned char result = num & bit; // result = 0b10100101

以上例子我们先定义一个数值bit,该数值只有第3位为0,其余位都为1。然后将num与该数值进行与运算,就可以将num的第3位设置为0了。

切换某一位

我们可以使用^运算符将变量与一个数值进行异或运算,来切换该变量对应位的值。如下例子,将num的第6位切换:

unsigned char num = 0b10100101;
unsigned char bit = 1 << 5; // bit = 0b00100000
unsigned char result = num ^ bit; // result = 0b10000101

以上例子我们先定义一个数值bit,该数值只有第6位为1,其余位都为0。然后将num与该数值进行异或运算,就可以将num的第6位切换了。

修改某一位的值

如果我们希望直接对某一位的值进行修改,可以先清除该位,再设置该位的值。如下例子,将num的第4位设置为0:

unsigned char num = 0b11001111;
unsigned char bit = ~(1 << 3); // bit = 0b11101111
num &= bit; // num = 0b11001111 -> 0b11000111

以上例子我们先把bit数值的第4位设置为0,其余位都为1。 然后将num与该数值进行与运算,就可以清除该位的值。最后,我们就可以该对该变量该位的值进行设置了。

以上是对位级别操作的介绍,如有疑问请参考相关文献,祝使用愉快!