2010-10-26 11 views
13

La parola byte denota un tipo integrale che memorizza valori come indicato nella tabella seguente. È un numero intero a 8 bit senza segno.Se byte è intero a 8 bit, come possiamo impostarlo su 255?

Se sono solo 8 bit, come è possibile assegnarlo a 255 uguali?

byte myByte = 255; 

Ho pensato che 8 bit fosse la stessa cosa di un solo carattere?

+1

In .net, 1 carattere è 16 bit (UTF-16) –

+13

Ti rendi conto che la stringa "255" e il numero 255 sono due cose diverse, vero? –

+3

@Marc Gravell - Trovo ancora semanticamente divertente che un singolo carattere sia equivalente a una parola. –

risposta

19

I caratteri sono descritti (in senso basico) da una rappresentazione numerica che si inserisce all'interno di una struttura a 8 bit. Se guardi il ASCII Codes per i caratteri ascii, vedrai che sono correlati ai numeri.

Il conteggio intero una sequenza di bit che può rappresentare viene generato dalla formula 2^n - 1 (come parzialmente descritto sopra da @Marc Gravell). Quindi una struttura a 8 bit può contenere 256 valori compreso 0 (nota anche che i numeri TCPIP sono 4 sequenze separate di strutture a 8 bit). Se questo era un intero con segno, il primo bit sarebbe un flag per il segno e il rimanente 7 avrebbe indicato il valore, quindi mentre avrebbe mantenuto ancora 256 valori, ma il massimo e il minimo sarebbero determinati dai 7 bit finali (quindi 2^7 - 1 = 127).

Quando si entra in caratteri Unicode e caratteri "alti ascii", la codifica richiede più di una struttura a 8 bit. Quindi, nel tuo esempio, se dovessi assegnare un byte al valore di 76, potresti consultare una tabella di ricerca per ricavare il carattere ascii v.

11

11111111 (8 sui bit) è 255: 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1

Forse stai confondendo questo con 256, che è 2^8?

25

Esistono 256 diversa configurazione di bit in un byte

0000 0000 
0000 0001 
0000 0010 
... 
1111 1111 

Così può assegnare un byte un valore nell'intervallo 0-255

9

8 bit (senza segno) ès 0 thru 255, o (2^8) -1.

It suoni come se si confondesse intero vs rappresentazioni di testo di dati.

4

intervallo di valori per unsigned 8 bit è 0 a 255. quindi questo è perfettamente valido

8 bit non è lo stesso di un carattere in C#. Nel carattere C# è 16 bit. E anche se il carattere è di 8 bit non ha alcuna rilevanza per la questione principale

5

255 = 2^8 - 1 = FF [hex] = 11111111 [bin]

+0

Typo: dovrebbe essere 'FF [hex]' – Ishtar

+0

ovviamente - risolto – UGEEN

2

Credo che tu stia confondendo la codifica dei caratteri con la valore integrale effettivo memorizzato nella variabile.

Un valore a 8 bit può avere 255 configurazioni come risposta da Arkain
Opzionalmente, in ASCII, ciascuno di questi configurazione di rappresentare un carattere ASCII diverso
Quindi, fondamentalmente dipende da come si interpreta il valore, come valore intero o come personaggio

ASCII Table
Wikipedia on ASCII

5

ho pensato 8 bit è stata la stessa cosa di solo carattere?

Penso che tu stia confondendo il numero 255 con la stringa "255."

pensare in questo modo: se i computer i numeri memorizzati internamente utilizzando caratteri, come sarebbe memorizzare quei personaggi ? Utilizzando bit, giusto?

Quindi in questo ipotetico scenario, un computer userebbe bit per rappresentare caratteri che poi a sua volta usati per rappresentare numeri.A parte essere orrendi da un punto di vista dell'efficienza, questo è ridondante. I bit possono rappresentare direttamente i numeri.

+0

Bene, COBOL lo fa. E molti database definiscono i loro numeri in termini di lunghezza decimale. Gli dei sanno perché ... – Nyerguds

0

Certo, un po 'tardi per rispondere, ma per coloro che ottenere questo in una ricerca su Google, qui andiamo ...

Come altri hanno detto, un personaggio è sicuramente diverso da un numero intero. Se è 8 bit o non è irrilevante, ma posso aiutare semplicemente dichiarando come funziona ciascuno:

per un numero intero a 8 bit, un intervallo di valori tra 0 e 255 è possibile (o -127..127 se è firmato e, in questo caso, il primo bit decide la polarità)

per un carattere a 8 bit, sarà molto probabilmente un carattere ASCII, di cui di solito viene fatto riferimento a un indice specificato con un valore esadecimale, ad esempio FF o 0A. Poiché i computer nel corso della giornata erano solo a 8 bit, il risultato era una tabella 16x16, ovvero 256 possibili caratteri nel set di caratteri ASCII.

In entrambi i casi, se il byte è lungo 8 bit, allora sia un indirizzo ASCII che un numero intero a 8 bit rientreranno nei dati della variabile. Raccomanderei comunque di usare un tipo di dati più dedicato per semplicità. (es. char per ASCII o dati grezzi, int per numeri interi di qualsiasi lunghezza di bit, solitamente 32 bit)

Problemi correlati