|
| Bitoperatorer i c++ Fra : 234 | Vist : 733 gange 50 point Dato : 09-08-05 00:26 |
|
Hej !
Er der en som kan give mig en forklaring på hvordan bitoperatorer de virker og hvad de kan bruges til ?
| |
|
And operatoren: Resultatet er de bit der er sat på begge sider:
0xAAAA & 0xCCCC == 0x8888
Or operator: Resultatet er de bit der er sat på den ene eller den anden side;
0xAAAA | 0xCCCC == 0xDDDD
XOR operator: Resultatet er de bit der er sat på den ene eller den anden side, men ikke på begge sider:
0xAAAA ^ 0xCCCC == 0x6666
| |
|
Der er også bit shift operatorer:
0x5555 << 1 == 0xAAAA
0xAAAA >> 1 == 0x5555
Man bruger f.ex. bitoperator til at specificere flag til mange Win32Api funktioner.
#define Whatever 0x0008
Flag = Flag | Whatever; // Sæt bit i Flag
Flag = Flag & ~Whatever; // Clear bit i Flag.
~ er bitvis not operator
| |
| Kommentar Fra : 234 |
Dato : 09-08-05 00:46 |
|
Jeg er rimelig nybegynder inde for c++ programmering så det er lidt svært for mig at forstå det du skriver.
Kan du forklarer det på en mere enkelt måde så vil jeg værer glad ?
| |
| Accepteret svar Fra : BertelBrander | Modtaget 60 point Dato : 09-08-05 00:51 |
|
Hvis vi starter med:
0x0A betyder A hex, det samme som 10 decimalt eller 1010 binært
0x0C betyder C hex, det samme som 12 decimalt, eller 1100 binært
0x0A & 0x0C betyder: 0x0A AND 0x0C, resultatet er de bit der er sat på begge sider, dvs 1000 binært, det samme som 8
Se også:
http://www.d-axel.dk/pub/c/c/operatorer.html
| |
|
0x05 << 1 betyder skift alle bits 1 bit op (til venstre) det svarrer til at sætte et 0 bagefter:
0x05 er 0101 binært, hvis vi sætter 0 bagefter (<< 1) får vi: 1010, det samme som 0x0A eller 10 decimalt.
Dvs << 1 er det samme som at gange med 2
| |
| Kommentar Fra : molokyle |
Dato : 09-08-05 00:56 |
|
Skal du gange X med 2 ? X << 1
..dividere X med 2 ? X >> 1
Gange X med 4 ? X >> 2
Dividere X med 4 ? X << 2
osv..
Så vidt jeg husker
</MOLOKYLE>
| |
| Kommentar Fra : 234 |
Dato : 09-08-05 00:56 |
|
Jeg kigger på det !
Tak for hjælpen !
| |
| Godkendelse af svar Fra : 234 |
Dato : 09-08-05 00:56 |
|
Tak for svaret BertelBrander.
| |
| Kommentar Fra : molokyle |
Dato : 09-08-05 00:59 |
|
Smutter...
..
Gange X med 4 ? X << 2
Dividere X med 4 ? X >> 2
.. Gange X med 8 ? X << 2
Dividere X med 8 ? X >> 2
osv.
Altså en ryk en bit X pladser til venstre eller højre.
</MOLOKYLE>
| |
| Kommentar Fra : molokyle |
Dato : 09-08-05 01:02 |
|
..mere sludder ...Sorry
.. Gange X med 8 ? X << 3
Dividere X med 8 ? X >> 3
..selvfølgelig.
</MOLOKYLE>
| |
| Du har følgende muligheder | |
|
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.
Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
| |
|
|