CyberPress.Sopron

(http://www.cyberpress.hu/)

Rovat: Dr. Bit

2002. január 15., kedd 21:28


Programozzunk együtt!

BITezzünk! (C/C++)

BITezzünk!

C/C++ -ban is lehet variálni a biteket. Aki esetleg ismeri az ASSEMBLY-t is egy kissé, az tudja, hogy milyen bit-műveletekre van lehetőségünk:  

AND (ÉS)
OR (VAGY)
XOR (KIZÁRÓ VAGY)

C/C++-ban a következő jelöléseket használják az egyes műveletek elvégzésére:

Jelölés Művelet
& AND
| OR
^ XOR


Figyelem: Nem keverd össze a bit és logikai operátorokat! Az előbbiekből egyet, az utóbbiakból pedig kettőt kell kitenni!
A következő táblázatokból kitűnik, hogy hogyan változnak meg a bit értékek az egyes műveletekben:

Bit 1 Bit 2 AND
0 0 0
1 0 0
0 1 0
1 1 1

 

Bit 1 Bit 2 OR
0 0 0
1 0 1
0 1 1
1 1 1

 

Bit 1 Bit 2 XOR
0 0 0
1 0 1
0 1 1
1 1 0

Tehát a bit-operátorokat most áttekintettük röviden. Most joggal merül fel, hogy ezt mire is lehet használni? Egy példa: A xor-t fel lehet használni titkosításra: ha valamit xor-olunk, majd az eredményt újra xor-oljuk, akkor visszakapjuk az eredeti értéket.
Itt van egy egyszerű példa:

#include<stdio.h>
void main(void)
{
int x=63, y=49, temp;
printf("A ket ertek: 'x': %d, 'y': %dnn", x,y);
printf("'x'-et 'y'-al XOR-oljuk - erteke 'temp'-be kerul...nn");
temp=x^y;
printf("'temp': %dnn",temp);
printf("'temp'-et 'y'-al XOR-oljuk - erteke 'x'-be kerul...nn");
x=temp^y;
printf("Visszakaptuk az eredeti 'x'-et: %dnn",x);
}