2013-03-20 2 views
0

Там есть переменная:Как установить бит в C

char segment = 0; 

После 1 или с битом 15, сегмент = 1;

Просто означает, что этот бит уже проверен.

Вопрос в том, как отменить отметку бит 15 (установлен на 0)?

Использование "~"?

+4

'char' имеет только 8 бит (не 15) – mvp

+2

@mvp правильно - также смотрите здесь http://stackoverflow.com/q/47981/2065121 –

+0

Извините, я только начал изучать язык C. 0 0 0 1 назад 0 0 0 0 – Yun

ответ

0

Чтобы избавиться от MSB из 8-битового символа, например, вы можете и с 0x7F

например сегмент = сегмент & 0x7F;

Для динамического создания маски вы можете использовать операции смещения битов (то есть оператор < <).

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 
}