Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare
HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare
A New York HP ha messo al centro della scena HP IQ, la piattaforma di IA locale da 20 miliardi di parametri. L’abbiamo vista in funzione: è uno strumento che funziona, pensato per un target specifico, con vantaggi reali e limiti altrettanto evidenti
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è
La PNY GeForce RTX 5080 Slim OC si distingue nel panorama delle GPU di fascia alta per il design compatto a due slot, ispirato alla NVIDIA GeForce RTX 5080 Founders Edition. In questo test analizziamo comportamento termico e prestazioni in gioco, valutando se il formato ridotto comprometta o meno l'esperienza complessiva rispetto alle soluzioni più ingombranti presenti sul mercato.
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei
HUAWEI WiFi Mesh X3 Pro Suite è probabilmente il router mesh più fotogenico che si possa acquistare oggi in Italia, ma dietro il guscio in acrilico trasparente e le luci LED dinamiche c'è una macchina tecnica costruita attorno allo standard Wi-Fi 7, con velocità teoriche Dual-Band fino a 3,6 Gbps e una copertura fino a 120 m² una volta abbinato il router principale all'extender incluso nel kit
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 21-07-2005, 17:34   #1
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 6816
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?
Unrue è offline   Rispondi citando il messaggio o parte di esso
Old 21-07-2005, 18:49   #2
71104
Bannato
 
L'Avatar di 71104
 
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
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 21-07-2005, 20:38   #3
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 6816
Quote:
Originariamente inviato da 71104
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
Quindi l'unico modo è usare le maschere? Pero' in questo modo non operiamo realmente sul singolo bit. Chissà come mai non hanno implementato una cosa del genere.Forse perchè è impossibile.Ciao, grazie.
Unrue è offline   Rispondi citando il messaggio o parte di esso
Old 21-07-2005, 21:32   #4
Ziosilvio
Moderatore
 
L'Avatar di Ziosilvio
 
Iscritto dal: Nov 2003
Messaggi: 16214
Quote:
Originariamente inviato da Unrue
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?
No: i puntatori lavorano su oggetti che occupano un numero intero di byte.
Però puoi usare le maschere e gli operatori bit-a-bit.
Quote:
Supponiamo che in un byte ho memorizzato il codice 11010111 . Voglio cambiare il primo bit, quindi faccio una maschera del tipo 01111111
Casomai, del tipo "11111110": i bit si contano a partire dal meno significativo, cioè da quello più a destra.
Quote:
e poi faccio l'AND tra la maschera ed il codice.
Se vuoi cambiare il valore di un bit, cioè metterlo a 1 se è 0 e a 0 se è 1, devi fare non un AND ma uno XOR, e mettendo 1 in corrispondenza dei bit che vuoi cambiare, e 0 in corrispondenza degli altri.
Nel tuo caso:
Codice:
mybyte ^= 0x1;
Quote:
Ma è possibile dire al puntatore a quel byte, puntami al primo bit e scrivimi 0?
Al puntatore no, ma al bit scelto ovviamente sì: basta fare un AND con la maschera complementare.
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:
Pero' in questo modo non operiamo realmente sul singolo bit.
Perché no?
Il bit cambia, gli altri rimangono immutati: come fai a dire che non si è operato sul singolo bit?
Quote:
Chissà come mai non hanno implementato una cosa del genere.Forse perchè è impossibile.
Casomai, perché sarebbe scomodo.
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" Chi scherza col fuoco si brucia.
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 21:38.
Ziosilvio è offline   Rispondi citando il messaggio o parte di esso
Old 21-07-2005, 21:52   #5
Unrue
Senior Member
 
L'Avatar di Unrue
 
Iscritto dal: Nov 2002
Messaggi: 6816
Quote:
Originariamente inviato da Ziosilvio
Casomai, del tipo "11111110": i bit si contano a partire dal meno significativo, cioè da quello più a destra.
Hai ragione, intendevo dire il bit piu' significativo

Quote:
Originariamente inviato da Ziosilvio
Se vuoi cambiare il valore di un bit, cioè metterlo a 1 se è 0 e a 0 se è 1, devi fare non un AND ma uno XOR, e mettendo 1 in corrispondenza dei bit che vuoi cambiare, e 0 in corrispondenza degli altri.
Nel tuo caso:
Codice:
mybyte ^= 0x1;
Verissimo, ho fatto un po' di confusione

Quote:
Originariamente inviato da Ziosilvio
Perché no?
Il bit cambia, gli altri rimangono immutati: come fai a dire che non si è operato sul singolo bit?
Intendevo dire, che comunque l'operazione logica è fatta su tutti i bit, non solamente su quello che devo cambiare.In pratica, non esiste un'operatore che mi fa operare sul singolo bit.

Quote:
Originariamente inviato da Ziosilvio
Casomai, perché sarebbe scomodo.
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.
Pero' in qualche caso potrebbe fare comodo, perchè comunque devo crearmi maschere di 8 bit per modificarne uno. Non so in termini computazionali quele sia meglio. Sicuramente le maschere, altrimenti non le facevano.

PS: Stai diventando il mio punto di riferimento in questo forum.
Unrue è offline   Rispondi citando il messaggio o parte di esso
Old 22-07-2005, 01:18   #6
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da Unrue
Intendevo dire, che comunque l'operazione logica è fatta su tutti i bit, non solamente su quello che devo cambiare.In pratica, non esiste un'operatore che mi fa operare sul singolo bit.
lascia perdere il linguaggio C++: nessuna macchina è in grado di lavorare su un solo bit alla volta; gli Intel ad es. devono per forza lavorare almeno su byte di 8 bit, ed è così anche per molte altre.
71104 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HP Imagine 2026: abbiamo visto HP IQ all’opera, ecco cosa può (e non può) fare HP Imagine 2026: abbiamo visto HP IQ all’opera, ...
PNY RTX 5080 Slim OC, sembra una Founders Edition ma non lo è PNY RTX 5080 Slim OC, sembra una Founders Editio...
Wi-Fi 7 con il design di una vetta innevata: ecco il nuovo sistema mesh di Huawei Wi-Fi 7 con il design di una vetta innevata: ecc...
Core Ultra 7 270K Plus e Core Ultra 7 250K Plus: Intel cerca il riscatto ma ci riesce in parte Core Ultra 7 270K Plus e Core Ultra 7 250K Plus:...
PC Specialist Lafité 14 AI AMD: assemblato come vuoi tu PC Specialist Lafité 14 AI AMD: assemblat...
Il dodicesimo lancio del razzo spaziale ...
Blue Origin sta assemblando il secondo l...
Meta moltiplica gli investimenti in data...
Addio riflessi fastidiosi? Samsung prese...
PlayStation 5, doccia fredda da Sony: i ...
Super Meat Boy 3D: annunciata la data d'...
XT View Matrix, il mid-tower Phanteks ch...
David Sacks lascia il ruolo di 'Crypto C...
LG All Stars 2026: quando l'installatore...
Addio ad Anna's Archive? Ecco la mossa l...
Addio al Mac Pro, Apple mette fine a un ...
Panasonic a MCE 2026: la rivoluzione sil...
Netflix alza la posta: il piano Premium ...
Nimbus Innovation Awards – Cloud Edition...
Wikipedia vieta i contenuti generati dal...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:00.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v