Pitagora (Member)
Expert
Messaggi: 367
Iscritto: 12/06/2010
|
Sto studiando da poi gli operatori bitwise ma se devo dirla tutta non li trovo molto utili. A cosa servono?
|
|
pierotofy (Admin)
Guru^2
Messaggi: 6230
Iscritto: 04/12/2003
|
TheKaneB ha scritto un buon articolo che dovrebbe rispondere alla tua domanda: http://www.oscene.net/it/programmazione/c/capire-e-sfrutta ...
Il perchè usare operazioni bitwise invece di usare altri metodi è un fatto puramente di performance; molto spesso utilizzare le operazioni bitwise sono più veloci delle loro equivalenti non-bitwise.
Ultima modifica effettuata da pierotofy il 02/09/2010 alle 16:49
|
|
nihal (Ex-Member)
Pro
Messaggi: 109
Iscritto: 12/04/2010
|
Beh, un esempio potrebbe essere la cifratura XOR, che viene fatta "xorando" bitwise tutti i bit del dato da codificare con la chiave scelta, oppure quando si usano le mask in OpenGL... Le applicazioni sono virtualmente infinite...
|
|
Bonny (Member)
Expert
Messaggi: 437
Iscritto: 24/04/2009
|
Ottimo articolo |
|
Pitagora (Member)
Expert
Messaggi: 367
Iscritto: 12/06/2010
|
Studiando questi operatori sul libro e su alcune guide sul web sono arrivato ad una conclusione. Corregetemi se sbaglio:
~ = converte tutti gli 0 in 1 e tutti 1 in 0
<< = aggiunge n 0 da destra
>> = aggiunge n 0 da sinistra
purtroppo non ho capito quest'ultimi: | & ^ me li spiegate. Grazie
|
|
nihal (Ex-Member)
Pro
Messaggi: 109
Iscritto: 12/04/2010
|
Gli operatori | ^ & corrispondono rispettivamente agli OR, XOR e AND della logica. In particolare:
-OR restituisce 1 se almeno uno degli operandi è 1, altrimenti 0;
-XOR restituisce 1 se solo uno degli operandi è 1 (scusa il gioco di parole ), altrimenti 0;
-AND restituisce 1 solo se entrambi gli operandi sono 1, altrimenti 0;
In ambito bitwise, gli operandi sono i singoli bit... Se hai domande posta, spero di essere stato chiaro
Ultima modifica effettuata da nihal il 04/09/2010 alle 18:19 |
|
Pitagora (Member)
Expert
Messaggi: 367
Iscritto: 12/06/2010
|
il concetto sta diventando sempre più chiaro. potresti concludere facendo degli esempi? le cose che ho detto prima riguardo a ^ >> <<
|
|
nihal (Ex-Member)
Pro
Messaggi: 109
Iscritto: 12/04/2010
|
Guarda, esempi sugli shift e sull'AND li trovi sull'articolo di TheKaneB che ti è stato segnalato qualche reply fa, mentre sul not non penso ci vogliano spiegazioni, no?
Invece per XOR (non uso tutti i 32 bit, ma i semplici numeri in binario):
101000 XOR
001011 =
___________
100011
|
|
Il Totem (Admin)
Guru^2
Messaggi: 3635
Iscritto: 24/01/2006
|
Postato originariamente da Pitagora:
Studiando questi operatori sul libro e su alcune guide sul web sono arrivato ad una conclusione. Corregetemi se sbaglio:
~ = converte tutti gli 0 in 1 e tutti 1 in 0
<< = aggiunge n 0 da destra
>> = aggiunge n 0 da sinistra
purtroppo non ho capito quest'ultimi: | & ^ me li spiegate. Grazie |
>> e << sono operatori di shift. Non aggiungono semplicemente 0 a destra o a sinistra, ma "spostano" letteralmente tutti i bit verso destra o verso sinistra. Se un bit va fuori dalla finestra della rappresentazione, viene perso. Spostando il tutto in un verso, gli spazi rimanenti all'estremo opposto vengono riempiti con degli 0.
100100 >> 3 = 000100
110101 << 2 = 010100 |
|