2010-10-26 34 views
13

La palabra clave byte denota un tipo integral que almacena los valores como se indica en la siguiente tabla. Es un entero de 8 bits sin signo.Si el byte es un número entero de 8 bits, ¿cómo podemos establecerlo en 255?

Si solo son 8 bits, ¿cómo podemos asignarlo a 255?

byte myByte = 255; 

I thought 8 bits es lo mismo que solo un personaje?

+1

En .net, 1 carácter es 16 bits (UTF-16) –

+13

Se da cuenta de que la cadena "255" y el número 255 son dos cosas diferentes, ¿verdad? –

+3

@Marc Gravell - Todavía me parece semánticamente divertido que un solo personaje sea equivalente a una palabra. –

Respuesta

19

Los caracteres se describen (en un sentido básico) mediante una representación numérica que se ajusta dentro de una estructura de 8 bits. Si nos fijamos en ASCII Codes para los caracteres ascii, verás que están relacionados con los números.

El número entero que una secuencia de bits puede representar es generado por la fórmula 2^n - 1 (como se describió parcialmente anteriormente por @Marc Gravell). Por lo tanto, una estructura de 8 bits puede contener 256 valores, incluido 0 (también se debe tener en cuenta que los números TCPIP son 4 secuencias separadas de estructuras de 8 bits). Si se tratara de un entero con signo, el primer bit sería un indicador para el signo y el 7 restante indicaría el valor, de modo que mientras aún tendría 256 valores, el máximo y el mínimo serían determinados por los 7 bits finales (por lo que 2^7 - 1 = 127).

Cuando entra en caracteres Unicode y caracteres "altos ascii", la codificación requiere más de una estructura de 8 bits. Por lo tanto, en su ejemplo, si tuviera que asignar un byte a un valor de 76, se podría consultar una tabla de búsqueda para derivar el carácter ascii v.

11

11111111 (8 en bits) es 255: 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1

Tal vez estás confundiendo esto con 256, que es 2^8?

25

Hay 256 configuración diferente de bits en un byte

0000 0000 
0000 0001 
0000 0010 
... 
1111 1111 

Así puede asignar un byte de un valor en el intervalo 0-255

9

8 bits (sin signo) es 0 a 255, o (2^8) -1.

Es suena como usted está confundiendo las representaciones de datos enteros vs texto.

4

rango de valores para sin signo de 8 bits es de 0 a 255. por lo que este es perfectamente válido

8 bits no es el mismo que un carácter en C#. En el carácter C# es de 16 bits. E incluso si el personaje es de 8 bits no tiene relevancia a la pregunta principal

5

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

+0

Error tipográfico: debería ser 'FF [hex]' – Ishtar

+0

por supuesto - se corrigió – UGEEN

2

Creo que estás confundiendo la codificación de caracteres con el valor integral real almacenado en la variable.

Un valor de 8 bits puede tener 255 configuraciones como respondidas por Arkain
Opcionalmente, en ASCII, cada uno de los configuración de representar un carácter ASCII diferente
Así que, básicamente, depende de cómo se interprete el valor, como un valor entero o como un personaje

ASCII Table
Wikipedia on ASCII

5

pensé 8 bits fue el mismo que sólo un carácter?

Creo que está confundiendo el número 255 con la cadena "255."

pensar de esta manera: si los números ordenadores almacenan internamente usando caracteres , ¿cómo sería almacenar los caracteres ? Usando bits, ¿verdad?

Por lo tanto, en este escenario hipotético, una computadora usaría bits para representar caracteres que luego utilizaría para representar números.Además de ser horrendo desde el punto de vista de la eficiencia, esto es simplemente redundante. Los bits pueden representar números directamente.

+0

Bueno, COBOL lo hace. Y muchas bases de datos definen sus números en términos de longitud decimal. Dioses saben por qué ... – Nyerguds

0

Claro, un poco tarde para responder, pero para aquellos que conseguir esto en una búsqueda en Google, aquí vamos ...

como han dicho otros, un personaje es definitivamente diferente a un entero. Si es de 8 bits o no es irrelevante, pero puedo ayudar simplemente indicando cómo funciona cada uno:

para un entero de 8 bits, es posible un rango de valores entre 0 y 255 (o -127..127 si está firmado, y en este caso, el primer bit decide la polaridad)

para un carácter de 8 bits, lo más probable es que sea un carácter ASCII, del que generalmente se hace referencia mediante un índice especificado con un valor hexadecimal, por ejemplo FF o 0A. Debido a que las computadoras de ese día solo tenían 8 bits, el resultado fue una tabla de 16x16, es decir, 256 caracteres posibles en el conjunto de caracteres ASCII.

De cualquier forma, si el byte tiene una longitud de 8 bits, tanto una dirección ASCII como un entero de 8 bits encajarán en los datos de la variable. Sin embargo, recomendaría utilizar un tipo de datos diferente más dedicado por simplicidad. (por ejemplo, char para ASCII o datos sin procesar, int para enteros de cualquier longitud de bit, por lo general de 32 bits)

Cuestiones relacionadas