/ Forside/ Teknologi / Udvikling / C/C++ / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Bitoperatorer i c++
Fra : 234
Vist : 731 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 ?

 
 
Kommentar
Fra : BertelBrander


Dato : 09-08-05 00:34

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

Kommentar
Fra : BertelBrander


Dato : 09-08-05 00:38

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

Kommentar
Fra : BertelBrander


Dato : 09-08-05 00:55

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.
Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste