Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
ASUS Expertbook PM3: il notebook robusto per le aziende
ASUS Expertbook PM3: il notebook robusto per le aziende
Pensato per le necessità del pubblico d'azienda, ASUS Expertbook PM3 abbina uno chassis particolrmente robusto ad un pannello da 16 pollici di diagonale che avantaggia la produttività personale. Sotto la scocca troviamo un processore AMD Ryzen AI 7 350, che grazie alla certificazione Copilot+ PC permette di sfruttare al meglio l'accelerazione degli ambiti di intelligenza artificiale
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo
Abbiamo provato per diversi giorni una new entry del mercato italiano, la Gowow Ori, una moto elettrica da off-road, omologata anche per la strada, che sfrutta una pendrive USB per cambiare radicalmente le sue prestazioni
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-07-2011, 10:46   #1
gaiapuffo
Member
 
Iscritto dal: Jul 2011
Messaggi: 152
memoria computer programmazione

ciao volevo chiedere una cosa...quando salvo un dato vi è il vincolo di allineamento cioè la memoria è fatta in questo modo

0
4
8
12 ecc

quindi i dati vengono salvati in blocchi da 4 byte ma se io ad esempio ho una variabile di tipo int
e la trasformo in una short in tutti casi anche la variabile short occuperà 4 byte solo che potra contenere una valore più piccolo?
gaiapuffo è offline   Rispondi citando il messaggio o parte di esso
Old 14-07-2011, 15:27   #2
Marinelli
Senior Member
 
L'Avatar di Marinelli
 
Iscritto dal: Aug 1999
Città: Tolmezzo (UD) - Milano
Messaggi: 13744
Discussione spostata nella sezione dedicata alla programmazione.

Ciao.
__________________
...to go where no one has gone before.
One ring to rule them all, one ring to find them, one ring to bring them all and in darkness bind them.
Caron, non ti crucciare: vuolsi così colà dove si puote ciò che si vuole, e più non dimandare.
Marinelli è offline   Rispondi citando il messaggio o parte di esso
Old 14-07-2011, 16:53   #3
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2780
Esempio pratico:
a è un intero di 4 byte
b è un intero di 2 byte

se esegui un assegnamento b=a ci sono 2 casi:
1: il valore di a è nel range di valori rappresentabili con 2 byte -> in b il valore viene copiato correttamente
2: il valore di a è fuori dal range -> in b il valore viene copiato troncato (c'è perdita di informazione).

Per questo genere di operazioni è richiesto un cast esplicito perché così il programmatore deve assumersi la responsabilità di un eventuale errore dovuto a troncamento.

Non ti ho risposto direttamente ma spero che tu abbia capito.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2011, 01:27   #4
lesto
Junior Member
 
Iscritto dal: Mar 2010
Messaggi: 13
la short, essendo solo di 2 byte, potra cotenere solo 2^16 valori. Non è corretta la tesi di wingman87:
immaginiamo, per semplicità, di usare uno short (2 byte) e 1 byte.
ovviamente, per ogni short salvato leggerò 2 byte: il primo sarà 0 se il valore salvato è < di 2^8 (senza segno), e quindi il secondo byte letto conterrà il valore giusto.
Altrimenti leggerai in entrambi i casi un valore erroneo. Mettiamola così: Se vuoi mettere una variabile in una più piccola, controlla che tutti i byte rimententi (partendo dal fondo) siano a 0: in questo caso non hai overflow. Vale per i numeri senza segno, per quelli con segno, l'ultimo bit (quello però più a sinistra) può valere 1, ovvero indicare che il numero è negativo.
lesto è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2011, 09:46   #5
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2780
Intendi dire che, anche se il valore della variabile più grande è nel range, il valore non viene copiato correttamente se esso è negativo (per via del bit di segno)?
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2011, 10:23   #6
lesto
Junior Member
 
Iscritto dal: Mar 2010
Messaggi: 13
esatto, devo anche correggermi che il sistema di mettere il bit più a sinistra a 1 è parzialmente corretto, perchè di solito si usa il complemento a 2, un metodo di memorizazione dei valori un poco complicato a prima vista, ma che rende la somma di due numeri (indipendentemente se positivi o negativi) sempre una somma, altrimenti per ogni somma dovrebbe esserci qualche if aggiuntivo per dedicedere se il secondo dei dati è negativo di usare una sottrazione, se il primo si complica un poco di più... Insomma avresti un sacco di cai particolare = più codice da debuggare
lesto è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2011, 12:53   #7
pabloski
Senior Member
 
Iscritto dal: Jan 2008
Messaggi: 8406
Quote:
Originariamente inviato da gaiapuffo Guarda i messaggi
ciao volevo chiedere una cosa...quando salvo un dato vi è il vincolo di allineamento cioè la memoria è fatta in questo modo

0
4
8
12 ecc

quindi i dati vengono salvati in blocchi da 4 byte ma se io ad esempio ho una variabile di tipo int
e la trasformo in una short in tutti casi anche la variabile short occuperà 4 byte solo che potra contenere una valore più piccolo?
non confondere lo spazio di memoria riservato a determinati tipi di dato e l'allineamento

si tratta di due cose abbastanza diverse

ogni tipo di dato ha una sua specifica dimensione...short ad esempio è 16 bit, int è 32 bit, long è 64 bit, ecc....

tuttavia per motivi tecnici si procede ad allineare le variabili al word boundary e così abbiamo che nei processori a 32 bit si allinea a 32 bit e così via

in pratica significa mettere i dati nelle locazioni di memoria che sono multiple di 4 ( nel caso dei 32 bit )

ovviamente se costringi una short a prendersi 4 bytes, gli altri 2 bytes inutili dovranno essere messi a zero

quello che ottieni in sostanza è che la short sempre short è, ma fisicamente occupa 32 bit
pabloski è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2011, 13:06   #8
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da pabloski Guarda i messaggi
ogni tipo di dato ha una sua specifica dimensione...short ad esempio è 16 bit, int è 32 bit, long è 64 bit, ecc....
Non è così. Dipende dall'ABI del sistema e/o compilatore.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2011, 14:24   #9
pabloski
Senior Member
 
Iscritto dal: Jan 2008
Messaggi: 8406
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Non è così. Dipende dall'ABI del sistema e/o compilatore.
ovviamente il mio riferimento era a sistemi a 32 bit
pabloski è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2011, 15:00   #10
gaiapuffo
Member
 
Iscritto dal: Jul 2011
Messaggi: 152
un grazie di cuore per le risposte adesso ho capito
gaiapuffo è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2011, 15:17   #11
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da pabloski Guarda i messaggi
ovviamente il mio riferimento era a sistemi a 32 bit
E' lo stesso. Ci sono sistemi a 32 bit che hanno interi e long a 32 bit, e altri che definiscono questi ultimi a 64 bit.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2011, 15:26   #12
pabloski
Senior Member
 
Iscritto dal: Jan 2008
Messaggi: 8406
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
E' lo stesso. Ci sono sistemi a 32 bit che hanno interi e long a 32 bit, e altri che definiscono questi ultimi a 64 bit.
vabbè ma non posso stare a spiegare tutte le varianti che esistono

alla fin fine il thread riguarda l'allineamento per cui mi sono attenuto è quello che è lo standard

ad esempio linux 64 bit ha interi a 32 bit e imho è una cosa giustissima da fare

che poi ci siano differenze tra vari compilatore e sistemi è irrilevante ai fini di questo thread
pabloski è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2011, 15:38   #13
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Allora non scrivere cose che non sono corrette e parla soltanto di quello che attiene al thread.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2011, 15:45   #14
pabloski
Senior Member
 
Iscritto dal: Jan 2008
Messaggi: 8406
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Allora non scrivere cose che non sono corrette e parla soltanto di quello che attiene al thread.
beh no, sono corrette

al limite ho omesso che ci sono strani compilatori che non giocano secondo le regole

p.s. trovo non standard il fatto di avere int a 64 bit e nessuno mi convincerà mai del contrario
pabloski è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2011, 16:55   #15
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Io mi riferivo ai long che hanno un comportamento diverso su sistemi sempre a 32 bit, che è un chiaro esempio di come non esistono rigide definizioni in merito.

Riguardo agli int a 64 bit, non è strano, ma anzi è logico. Vuol dire che si è preferito mappare la "word di macchina" dell'ISA con un int. Quindi ISA a 64 bit -> int a 64 bit.

In ogni caso se ometti queste cose, che sono estremamente importanti, l'informazione che fornisci non è corretta.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 16-07-2011, 18:05   #16
pabloski
Senior Member
 
Iscritto dal: Jan 2008
Messaggi: 8406
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
In ogni caso se ometti queste cose, che sono estremamente importanti, l'informazione che fornisci non è corretta.
se il thread fosse relativo a quanto grossi sono i long e gli int avresti ragione

ma qui si tratta di spiegare in parole povere cos'è l'allineamento
pabloski è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
Recensione OnePlus 15: potenza da vendere e batteria enorme dentro un nuovo design   Recensione OnePlus 15: potenza da vendere e batt...
AMD Ryzen 5 7500X3D: la nuova CPU da gaming con 3D V-Cache per la fascia media AMD Ryzen 5 7500X3D: la nuova CPU da gaming con ...
Obbligati ad acquistare una scheda madre...
GTA VI su PC? La data non c'è, ma...
Monopattini elettrici, a un anno dal dec...
Tesla Robotaxi, autista di sicurezza si ...
Samsung Galaxy S26: svelate le combinazi...
Microsoft Ignite: arriva Edge for Busine...
OPPO e Lamine Yamal uniscono sport e tec...
Microsoft, NVIDIA e Anthropic siglano un...
SpaceX potrebbe comunicare alla NASA rit...
Scoperte cavità sotterranee scava...
OnePlus anticipa l'arrivo di due nuovi p...
DJI lancia Osmo Action 6: la prima actio...
NASA: conferenza stampa sulla cometa int...
Ex CEO di TSMC passa a Intel: aperta un'...
Gigabyte X870E Aorus Elite X3D, una moth...
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: 22:56.


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