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".
 
Pubblicità
Pubblicità
Indietro
Top