- Операции надбитами
	
	
	
	
		| 
			x<<n | 
			Сдвиг
			влеводвоичного кода
			(умножение на2n) | 
			int
			x=7; x=x<<2; // x=111<<2=100 | 
	
		| 
			x>>n | 
			Сдвиг
			вправо двоичного кода (деление
			на 2n | 
			x>>1;
			100>>1=010 | 
	
		| 
			x
			& maska | 
			Поразрядное
			И (запись в бит 0) | 
			111
			& 100 =100 short
			maska=0x1F; short int x=0xFFFFFFFF; x
			& maska (0x0000001F) | 
	
		| 
			X
			|maska | 
			Поразрядное
			ИЛИ (запись в бит 1) | 
			111
			| 100 =111 short
			maska=0x1F; short int x=0xFFFFFF00; x
			& maska (0xFFFFFF1F) | 
	
		| 
			X
			^maska | 
			Исключающее
			ИЛИ для поразрядных
			операций | 
			.unsigned
			int x=0xF, a=1; A=x^a;
			1111 ^ 0001=1110 | 
	
		| 
			~ | 
			инверсия | 
			x=0x0F;
			~x (F0) | 
Пример.
Инвертирование маски перед умножением.
Установить пятый бит в 0
int_tmain(intargc,
_TCHAR* argv[])
{
unsigned
charx=255;
unsigned
charmaska=0x01;	//1=00000001
x=x&(~
(maska<<4));
cout<<(int)x;	//результат239cin.get();
return0;
}
	- Задания- 
		- 
		Напишите
		выражение, которое решаетзадачу 
 
-
Установить 7 бит в 1.
3 Памелу Зейв
	
		- 
		Какую
		задачу реализует код функции?voidcoutp(unsigned
		intx) 
{
intn=sizeof(int)*8;unsignedmaska=(1<<n-1);
for(inti=1;
i<=n;i++)
{
cout<<((x&maska)>>(n-i));
maska=maska>>1;
}}
	
		- 
		Определите
		задачи, которые решают функции: set, clr,
		test #define BITSPERWORD32 
#define
SHIFT 5
#define
maska 0x1F #define N 10000000
int
a[1+N/ BITSPERWORD];
void
set(int i){ a[i>> SHIFT] |=(1<<(I & MASK));} void clr
(int i){ a[i>> SHIFT] &=(1<<(I & MASK));}
int
test (int i) { return a[i>> SHIFT] &(1<<(I &
MASK));}
	- Реализацияалгоритма