有一个变量:
char segment = 0;
在 1 或第 15 位之后,段 = 1;
只是意味着这个位检查已经。
问题是如何取消第15位的标记(设置回0)?
使用“~”?
以下程序设置位,清除位和切换位
#include<stdio.h>
void main(void)
{
unsigned int byte;
unsigned int bit_position;
unsigned int tempbyte = 0x01;
//get the values of the byte and the bit positions
//set bit
byte = (byte | (tempbyte << bit_position));// set the bit at the position given by bit_position
//clear bit
byte = (byte & ~(tempbyte << bit_position));//clear the bit at the position given by bit_position
//toggle bits
byte = (byte ^ (tempbyte << bit_position));//toggle the bit at the position given by bit_position
}
例如,要去掉 8 位字符的 MSB,您可以使用 AND 与 0x7F
例如段 = 段 & 0x7F;
要动态生成掩码,您可以使用位移操作(即 << 运算符)。