0

有一个变量:

char segment = 0;

在 1 或第 15 位之后,段 = 1;

只是意味着这个位检查已经。

问题是如何取消第15位的标记(设置回0)?

使用“~”?

4

2 回答 2

1

以下程序设置位,清除位和切换位

#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
}
于 2014-02-27T22:44:00.153 回答
0

例如,要去掉 8 位字符的 MSB,您可以使用 AND 与 0x7F

例如段 = 段 & 0x7F;

要动态生成掩码,您可以使用位移操作(即 << 运算符)。

于 2013-03-20T06:14:13.763 回答