1、设置某个位(Set a Bit)
为了设置(即将某个位置1),我们使用**按位或(|)**运算符。
操作方法:
number = number | (1 << n);
n 是你想设置的位,1 << n 表示将 1 左移 n 位,构造一个位掩码,其中只有第 n 位为 1,其余为 0。
使用按位或(|)运算符可以将指定的位设置为1,而不会影响其他位。
#include <stdio.h>
int main() {
int number = 0; // 初始化为0,二进制:0000
int n = 2; // 设置第2位(从右到左,0-indexed)
number = number | (1 << n); // 设置第2位为1
printf("Number after setting bit %d: %d\n", n, number); // 输出4,二进制:0100
return 0;
}
2、 清除某个位(Clear a Bit)
为了清除某个位(即将某个位置0),我们使用**按位与(&)运算符和按位取反(~)**来创建掩码。
操作方法:
number = number & ~(1 << n);
~(1 << n) 构造一个掩码,其中第 n 位为0,其余位为 1。然后使用按位与(&)运算符清除第 n位,而不影响其他位。
#include <stdio.h>
int main() {
int number = 7; // 初始化为7,二进制:0111
int n = 1; // 清除第1位(0-indexed)
number = number & ~(1 << n); // 清除第1位
printf("Number after clearing bit %d: %d\n", n, number); // 输出5,二进制:0101
return 0;
}
3、 切换某个位(Toggle a Bit)
为了切换某个位(即将 1 变为 0,或者将 0 变为 1),我们使用**按位异或(^)**运算符。
操作方法:
number = number ^ (1 << n);
1 << n 构造一个掩码,其中只有第 n 位为 1。按位异或可以切换该位的状态。
#include <stdio.h>
int main() {
int number = 5; // 初始化为5,二进制:0101
int n = 2; // 切换第2位(0-indexed)
number = number ^ (1 << n); // 切换第2位
printf("Number after toggling bit %d: %d\n", n, number); // 输出1,二进制:0001
return 0;
}
4、检查某个位(Check a Bit)
为了检查某个位是否为 1 或 0,我们使用**按位与(&)**运算符。
操作方法:
bit = (number & (1 << n)) != 0;
1 << n 构造一个掩码,其中只有第 n 位为 1。按位与可以检测该位是否为 1。
#include <stdio.h>
int main() {
int number = 5; // 初始化为5,二进制:0101
int n = 2; // 检查第2位
int bit = (number & (1 << n)) != 0; // 检查第2位是否为1
printf("Bit %d is: %d\n", n, bit); // 输出1,表示第2位为1
return 0;
}