Qual è la rappresentazione binaria di "256"? [chiuso]


15

È possibile convertire i decimali in binari e binari in decimali. Ma come si può rappresentare il numero "256"?

255 = 11111111

1 byte non può contenere più di 8 cifre binarie (bit). Com'è possibile?


3
Come già detto da @Serious. Hai bisogno di un altro bit, perché i computer iniziano a contare da 0. Quello è un 11 in "linguaggio delle mani", o "un'altra persona" (byte) nel mondo reale :)
SOMN

2
L'ho chiusa come "Non è una vera domanda" perché è difficile dire cosa si vuole veramente sapere. Vuoi conoscere la rappresentazione binaria di un numero? Ti stai chiedendo come sia possibile che esista un numero anche se non può rientrare in un byte? Ti stai chiedendo come vengono archiviati i dati in bit e byte? Sì, 1 byte non può contenere più di 8 bit, poiché questa è la definizione di un byte. Ma ciò non impone alcun limite ai numeri in generale.
Der Hochstapler,

Non è possibile rappresentare 256 su 8 bit.
Overmind

Risposte:


40

Chiedete come rappresentare 256 in binario, ma immagino che vi stiate chiedendo perché la gente dice che i byte possono memorizzare 256 numeri diversi, quando il numero più grande che memorizza è 255. Come ha detto Claudiop, i computer iniziano a contare da 0, quindi 0 è in realtà il primo numero, 1 è il secondo, 2 è il terzo ... 255 è il 256 °.

Inoltre, 11111111 è solo 255 per byte senza segno. Quando si dispone di un byte con segno (un valore con segno può contenere valori negativi), 11111111 è in realtà -1. Vedi http://en.wikipedia.org/wiki/Two's_complement . Il modo in cui funziona il complemento a due, aggiungendo un numero negativo a un numero positivo risulta in 0. Come altri hanno già detto, se aggiungiamo un bit a 11111111 e il tuo tipo di dati può supportare solo 8 bit, l'ultimo bit traboccerà e ti lascerà con 0. Per i byte con segno, i valori vanno da -128 a 127. 128 numeri negativi + 0 + 127 numeri positivi = 256 numeri totali.

Per i valori con segno, il primo bit è il bit "segno". Se questo bit è impostato, il numero è negativo. 10000000 è negativo, 01000000 è positivo, 11111111 è negativo, 01111111 è positivo ...

Se sei su Windows (forse anche Mac ha), puoi aprire la calcolatrice, passare alla modalità programmatore, scegliere sbyte e giocare con i bit per vedere come sono correlati alle loro rappresentazioni decimali.

Calcolatore di Windows che mostra 256 in decimale e binario


12

Bene, hai bisogno di 2 byte per rappresentarlo. 256 = 00000001 00000000


11

Come già sapete, 255d (decimale) è uguale a 11111111b (binario). Se ora vuoi aggiungere 1 al valore, ci sono due possibilità:

O hai solo 8 bit. In questo caso, si verifica un cosiddetto overflow . Quindi, "internamente", verrà aggiunto l'1 risultante in 100000000b (256d in 9 bit). Ma poiché sono disponibili solo 8 bit, gli 8 bit inferiori verranno "restituiti". Quindi finisci con 0d = 0b (un flag di overflow speciale verrà impostato sulla maggior parte delle architetture di computer, proprio come una nota a margine).

Pensa allo stesso modo di contare con le dita. Immagina che le tue dita mostrino 9d. Ora aggiungi un altro dito. Si finisce con 10. Cosa fai se vuoi aggiungerne ancora uno?

L'altra possibilità è che tu abbia più di 8 bit disponibili. In questo caso puoi semplicemente aggiungere un'altra cifra all'inizio e il risultato sarà davvero 100000000b = 256d.

Un byte è la più piccola "unità" che un sistema informatico (sistema di memoria) può indirizzare. Ciò significa che se vuoi sapere solo un singolo bit, devi chiedere al sistema di memoria di darti un determinato byte da un indirizzo e poi devi capire il valore del bit che ti interessa.

Ma allo stesso modo in cui 8 bit compongono un byte, ci sono anche tipi di dati più grandi. 2 byte formano una parola (16 bit), due parole (quattro byte, 32 bit) formano una doppia parola. E oggi le architetture standard a 64 bit hanno persino tipi di dati a 64 bit (i cosiddetti registri).


Sì, e il computer non considera quei 64 bit come un gruppo di 8 byte separati, ma come una singola unità composta da 64 bit. Ad esempio, se hai valori con segno, solo uno di quei 64 bit è il bit di segno.
Lister,

5

È 100000000 e richiede più di un byte. In realtà ha bisogno di 9 bit.


0

È possibile rappresentarlo mediante un'operazione di spostamento dei bit (sinistra o destra a seconda dell'endianità della rappresentazione binaria). Ad esempio, questo liner funziona per una rappresentazione big endian (prima il byte più significativo):

1 << 8

Un byte senza segno può contenere solo 256 valori che includono l'intervallo di [0 - 255]. Per il valore 256 è necessario utilizzare un tipo di dati in grado di contenere un valore maggiore, ad esempio un numero intero.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.