Memorizzazione numero decimale in file binario

Pubblicità

137

Nuovo Utente
Messaggi
1
Reazioni
0
Punteggio
0
Non capisco una spiegazione che compare su wikipedia al link https://it.wikipedia.org/wiki/File_binario quando spiega come trasformare un numero decimale in binario.

Viene proposto come esempio la conversione del decimale 1365 in binario attraverso le divisioni per due e uso dei resti per scrivere il binario che risulta essere 10101010101.

E fin qui niente da dire, quello che non capisco è per quale ragione prosegua il ragionamento con:

ora trasformiamo il primo numero in base 10: 20 + 22 = 1 + 4 = 5
ora trasformiamo il secondo numero in base 10: 20 + 22 + 24 + 26 = 1 + 4 + 16 + 64 = 85

a cosa servono queste due righe finali?
come viene memorizzato 1365 in binario?
credo che su file\memoria il numero 1365 venga memorizzato nella forma di 0000010101010101

grazie 1000 per la spiegazione
 
Un file binario viene memorizzato come una sequenza di byte, ossia di 8 bit; questo significa che un numero viene immagazzinato in base 2^8=256. Infatti se converti 1365 direttamente dalla base 10 alla base 256 ottieni che

1|3|6|5 (10) = 5|85 (256)

dove ho utilizzato | come separatore delle singole cifre, infatti

5*10^0 + 6*10^1 + 3*10^2 + 1*10^3 = 1365

e

85*256^0 + 5*256^1 = 1365

Quello che viene fatto su wikipedia è convertire 1365 in binario (ossia in base 2) e sfruttare il fatto che, essendo 256 un multiplo di 2, e in particolare 256=2^8, si può passare dalla base 2 alla base 256 raggruppando le cifre del numero in binario in gruppi di 8 partendo da destra.
 
05 85 è la rappresentazione in base 16 (esadecimale)
in memoria e "fisicamente" è tutto in binario.
Francamente quella pagina non so dove voglia andare a parare, sono informazioni così a caso...
 
Ultima modifica:
05 85 è la rappresentazione in base 16 (esadecimale)
585 in esadecimale equivale a 1413 in base 10 (=5*16^0+8*16^1+5*16^2), non a 1365

quello che fa wikipedia è spiegare in modo pessimo che quel numero quando viene memorizzato su un file potrebbe essere convertito in una coppia di caratteri dove ciascun carattere occupa 8 bit (=256 valori possibili), che equivale alla spiegazione data in precedenza (uso della base 256)

@137 non ti affidare a wikipedia... spesso non è affidabile, spessissimo spiega male e soprattutto le informazioni non sono verificate
 
@137 non ti affidare a wikipedia... spesso non è affidabile, spessimo spiega male e soprattutto le informazioni non sono verificate
Bah, è ovvio che è sempre meglio integrare con altro materiale, ma io non sarei così snob nei confronti di wikipedia in riferimento a questi argomenti... cosa diversa invece sono le questioni "politiche" care al potere, a tal proposito basta confrontare l'attuale pagina relativa all'incendio della Casa dei sindacati di Odessa con la versione precedente! 😀

In ogni caso, pur non avendo tanta familiarità con gli argomenti in ballo, non capisco quale siano nello specifico i problemi con quella pagina di wikipedia relativamente alla memorizzazione di un intero (senza segno) in un file binario?!
 
penso che wikipedia abbia fatto un esempio di file di testo che codifica quella specifica sequenza di bit (omettendo ovviamente il resto dei byte che compongono il file vero e proprio, per esempio l'header dove si specifica anche il "tipo" di file)
 
Non ho mai approfondito l'argomento "file" in C/C++, ma ho letto qualcosina al momento per fare un test:

C:
#include <stdio.h>
#include <inttypes.h>

int main()
{
    uint16_t n = 9846;
    FILE *f = fopen("test.bin", "wb");
    if(f)
    {
        fwrite(&n, sizeof(n), 1, f);
        fclose(f);
    }
}

In pratica creo un file binario e gli scrivo un intero senza segno a 16 bit. Il file creato è effettivamente di 2 byte, e aprendolo col "Blocco note" di windows ottengo il seguente output

Codice:
v&

Essendo 9|8|4|6 (10) = 38|118 (256), e tenendo conto della codifica ASCII, tutto sembra tornare.
Quindi non capisco cosa ci sarebbe di strano o sbagliato in quella pagina di wikipedia!? 🤔
 
Quindi non capisco cosa ci sarebbe di strano o sbagliato in quella pagina di wikipedia!?
io non ho detto che quell'esempio è sbagliato, ho detto che è spiegato male, cioè le che 2 frasi dette così
ora trasformiamo il primo numero in base 10: 20 + 22 = 1 + 4 = 5
ora trasformiamo il secondo numero in base 10: 20 + 22 + 24 + 26 = 1 + 4 + 16 + 64 = 85

non spiegano al lettore che non sa nulla, cosa voglia dire. Come ho detto nel post precedente
penso che wikipedia abbia fatto un esempio di file di testo che codifica quella specifica sequenza di bit
difatti 2 caratteri a 8 bit creano un file da 2 byte (poi come tale file sia inserito nel file-system è un discorso a parte perché dipende dal file system stesso)
 
Innanzitutto con
Quindi non capisco cosa ci sarebbe di strano o sbagliato in quella pagina di wikipedia!? 🤔
mi riferivo anche alla seguente affermazione
Francamente quella pagina non so dove voglia andare a parare, sono informazioni così a caso...
che è stata aggiunta dall'autore dopo che ho inserito il mio post in cui gli facevo notare che quello che aveva scritto non aveva senso.


io non ho detto che quell'esempio è sbagliato, ho detto che è spiegato male, cioè le che 2 frasi dette così
ora trasformiamo il primo numero in base 10: 20 + 22 = 1 + 4 = 5
ora trasformiamo il secondo numero in base 10: 20 + 22 + 24 + 26 = 1 + 4 + 16 + 64 = 85

non spiegano al lettore che non sa nulla, cosa voglia dire.
Ti sei preso la briga di aprire la pagina di wikipedia in questione?
Chiedo perché messa così

12ab.webp

mi sembra tutto un po' più chiaro...


Come ho detto nel post precedente
penso che wikipedia abbia fatto un esempio di file di testo che codifica quella specifica sequenza di bit
e la sequenza di bit infatti è di 2 byte: 0000010101010101
Premesso che è tutto già scritto nella suddetta pagina, proprio non capisco il tuo riferimento ai "file di testo".
 
aggiunta dall'autore dopo che ho inserito il mio post
non lo hai citato l'autore, pensavo fosse riferita al mio post
Ti sei preso la briga di aprire la pagina di wikipedia in questione?
Chiedo perché messa così
l'utente ha chiesto la spiegazione della conversione in binario, le 2 frasi messe dopo la conversione di 1365 eseguono una conversione in base 10 dei 2 byte separati che compongono 1365, un'aggiunta inutile, infatti l'utente si è confuso.
Ci sarebbe da dire che per avere info su come si fa una conversione in binario non doveva aprire una pagina che parla di file binari ma una che parla di cambiamenti di base numerica.
proprio non capisco il tuo riferimento ai "file di testo".
solo perché quando si memorizza un sequenza grezza di byte, il file risultante può essere aperto con un editor di testo e, a seconda di cosa è stato memorizzato in formato grezzo apparirà un "testo" composto da singoli caratteri (non necessariamente tutti visualizzabili a schermo). Per l'interpretazione corretta serve sapere la natura dell'informazione.
 
Ci sarebbe da dire che per avere info su come si fa una conversione in binario non doveva aprire una pagina che parla di file binari ma una che parla di cambiamenti di base numerica.
Mi sa che hai colto il punto, e questo significa anche che le accuse fatte a quella pagina di wikipedia sono esagerate, per non dire infondate.
 
Ultima modifica:
Pubblicità
Pubblicità
Indietro
Top