|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6000
|
Puntatori a bit
Salve ragazzi,
vi pongo una domanda: in C++ è possibile far puntare un puntatore, che generalmente punta al byte, ad un singolo bit che compone tale byte? Vi faccio un'esempio: Supponiamo che in un byte ho memorizzato il codice 11010111 . Voglio cambiare il primo bit, quindi faccio una maschera del tipo 01111111 e poi faccio l'AND tra la maschera ed il codice. Ma è possibile dire al puntatore a quel byte, puntami al primo bit e scrivimi 0? |
![]() |
![]() |
![]() |
#2 |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
no, non si può perché l'unità di indirizzamento è il byte, e questo non dipende dal linguaggio usato (C++ nel tuo caso), ma dalla macchina su cui lavori: nessun computer ti fa indirizzare singoli bit
![]() |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6000
|
Quote:
![]() |
|
![]() |
![]() |
![]() |
#4 | ||||||
Moderatore
Iscritto dal: Nov 2003
Messaggi: 16211
|
Quote:
Però puoi usare le maschere e gli operatori bit-a-bit. Quote:
Quote:
Nel tuo caso: Codice:
mybyte ^= 0x1; Quote:
Per esempio, se vuoi mettere a 0 il byte di indice 3 (gli indici partono da 0) e lasciare invariati gli altri, puoi fare: Codice:
mybtyte &= ~(0x8); Quote:
Il bit cambia, gli altri rimangono immutati: come fai a dire che non si è operato sul singolo bit? Quote:
Pensaci un attimo: se dovessi essere in grado di indirizzare ogni singolo bit della memoria anziché ogni singolo byte, ti ci vorrebbero dei puntatori otto volte più grandi, e potresti allocare 256 volte meno memoria.
__________________
Ubuntu è un'antica parola africana che significa "non so configurare Debian" ![]() Scienza e tecnica: Matematica - Fisica - Chimica - Informatica - Software scientifico - Consulti medici REGOLAMENTO DarthMaul = Asus FX505 Ryzen 7 3700U 8GB GeForce GTX 1650 Win10 + Ubuntu Ultima modifica di Ziosilvio : 21-07-2005 alle 20:38. |
||||||
![]() |
![]() |
![]() |
#5 | ||||
Senior Member
Iscritto dal: Nov 2002
Messaggi: 6000
|
Quote:
![]() Quote:
Quote:
Quote:
PS: Stai diventando il mio punto di riferimento in questo forum. ![]() |
||||
![]() |
![]() |
![]() |
#6 | |
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:44.