Come ottenere da 1 byte a 2 byte

2

Abbiamo 1 byte , che è 8 bits , che è 2^8 . Ora 2 bytes dovrebbe essere 2 * 1 byte , che è 2 * 2^8 = 2^9 , ma in realtà 2 byte è 2^16 . Cosa mi manca qui? Sembra che 2 bytes non sia 2 * 1 byte , è più come 1 byte * 1 byte , ma questo dovrebbe darti byte^2 , il che non ha senso.

Può piacere che qualcuno mi spieghi che cosa sto sbagliando qui?

    
posta dhblah 30.06.2013 - 20:33
fonte

4 risposte

20

You have one byte, which is 8 bits

Fin qui tutto bene

which is 2^8

Il tuo uso di "che è" qui sembra essere la radice della tua confusione. Una frase più precisa è:

8 bits can represent 2^8 distinct values.

O in generale:

N bits can represent 2^N distinct values.

Se questo non è chiaro, potrebbe aiutarti a pensare alle cifre decimali (0-9). Una cifra decimale può rappresentare 10 valori distinti (0-9), due cifre decimali possono rappresentare 10 ^ 2 = 100 valori distinti (0-99), le cifre decimali N possono rappresentare 10 ^ N valori distinti.

Un bit è letteralmente una cifra binaria. Un bit può rappresentare due valori distinti (0-1), due bit possono rappresentare quattro valori distinti e N bit può rappresentare 2 ^ N valori distinti.

Quindi otto bit possono rappresentare 2 ^ 8 valori distinti e sedici bit possono rappresentare 2 ^ 16 valori distinti.

    
risposta data 30.06.2013 - 21:30
fonte
4

Ci sono due aspetti: la dimensione e il numero di stati rappresentabili. Aumentando la dimensione di un bit moltiplicare il numero di stati rappresentabili per 2 (si ottiene tutto lo stato precedente con il bit aggiuntivo impostato su 0 e nuovamente tutti gli stati precedenti con il bit aggiuntivo impostato su 1). Di conseguenza, raddoppiando le dimensioni quadrate il numero di stati rappresentabili (si hanno N possibili stati per il primo elemento che devono essere combinati con N stati per il secondo, quindi in totale N²). Se si pensa in decimale, aggiungendo una cifra decimale si moltiplica il numero di valori per 10 (e raddoppiando il numero di cifre decimali viene ancora il numero di valori).

Con 8 bit di byte:

  • 1 byte è 8 bit e può rappresentare valori compresi tra 0 e 2 ^ 8 (non inclusi).

  • 2 byte sono 16 bit e possono rappresentare valori compresi tra 0 e 2 ^ 16 (non inclusi).

Se possedevi una macchina con 2 cifre decimali:

  • 1 byte equivale a 2 cifre decimali e potresti rappresentare valori compresi tra 0 e 100 (non inclusi).

  • 2 byte sarebbero 4 cifre decimali e potresti rappresentare valori compresi tra 0 e 10000 (non inclusi).

risposta data 30.06.2013 - 20:38
fonte
3

Se 1 byte fosse effettivamente 2^8 , quindi 2 byte non è 2*(2^8) , ma 2^(2*8) .

Il punto in cui è andato storto presuppone che l'unità "byte" sia esattamente equivalente alla formula 2^8 . 2 ^ 8 è solo il numero di stati distinti che puoi rappresentare con 8 bit.

In effetti, "byte" come unità equivale a 8 bit (e non a 2^8 ). Pertanto, 2 byte equivalgono a 2*8 bit , e puoi rappresentare 2^(2*8) di stati distinti con questi.

(Off-topic: per essere un po 'più preciso, un byte non deve necessariamente essere largo 8 bit, questa è solo la dimensione più ampia per byte oggi. Se vuoi un'unità sempre , significa incondizionatamente esattamente 8 bit, che sarebbe "l'ottetto".)

    
risposta data 30.06.2013 - 22:12
fonte
0

Byte è un termine che si riferisce alla memoria capacità . Il contenuto di una posizione di archiviazione di dimensioni in byte è ciò su cui si basa la matematica. Il raddoppiamento del valore memorizzato in un bucket di dimensioni pari a un byte può o non può richiedere due byte di capacità per memorizzare il risultato. Il raddoppio 2 ^ 8 si traduce in 2 ^ 9 che richiede la capacità combinata di due byte da memorizzare. Il raddoppio 2 ^ 6 risulta in 2 ^ 7, che richiede solo un byte da memorizzare.

    
risposta data 30.06.2013 - 21:16
fonte

Leggi altre domande sui tag