2009-12-31 23 views
6

En el tutorial Sun' que dice acerca de un byte:java datos de tipo byte

bytes: El tipo de datos byte es una de 8 bits entero con signo de complemento a dos. Tiene un valor mínimo de -128 y un valor máximo de 127 (inclusive). El tipo de datos de bytes puede ser útil para guardar la memoria en matrices grandes, donde el ahorro de memoria realmente importa. También se pueden usar en lugar de int, donde sus límites ayudan a aclarar su código; el hecho de que el rango de una variable sea limitado puede servir como una forma de documentación.

¿Cómo se ahorra la memoria? ¿Cuál es el cumplido de 2?

Respuesta

10

Se ahorra memoria al consumir solo ocho bits de almacenamiento, frente a 32 para enteros. El tamaño de las matrices es directamente proporcional al tamaño del tipo de datos contenido; una matriz de enteros consumirá aproximadamente cuatro veces más memoria (ondas de mano) que una matriz de bytes.

De Wikipedia:

Un sistema de complemento a dos o aritmética de complemento a dos es un sistema en la que los números negativos son representado por complemento de el valor absoluto de los dos; 1 este sistema es el método más común de representar enteros con signo en las computadoras. [2] En tal sistema, se niega un número (convertido de positivo a negativo o viceversa) al calcular el complemento de los dos . Un sistema numérico de dos bits de N puede representar cada entero en el rango -2^(N-1) a + 2^(N-1) -1.

0

Los bytes ahorran memoria debido a que tienen un solo byte de longitud, mientras que la mayoría de los otros tipos de datos comúnmente utilizados tienen una longitud de 4 u 8 bytes.

El complemento a dos es la manera casi universal de codificar números con signo como binarios. Esta codificación tiene la agradable propiedad de que al incrementar cualquier valor como si fuera simplemente binario, se obtiene el siguiente valor entero, incluso cuando el valor pase por cero. El mismo circuito de la CPU puede calcular enteros con signo o sin signo.

2

La otra cosa es que, sobre todo por razones históricas, la mayoría de los datos se divide en bytes de 8 bits. Pudo haber sido cualquier número, pero las computadoras de 8 bits fueron muy populares cuando las cosas realmente se estaban normalizando, supongo.

Por lo tanto, el texto a menudo se almacena con un byte de 8 bits por letra (en modo ASCII). Los archivos de datos a menudo se indexan mediante punteros a índices de bytes. La gente habla de kilobytes y megabytes, y significan 1024 * 8 bits. o 2 * 8 bits.

Bytes son una especie de unidad universal de informática para muchos propósitos. Si desea editar un archivo estándar leído por otros programas, lo más probable es que necesite cargarlo en un byte [] y manipular bytes individuales en algún momento.

Si sun no incluye un tipo de datos de bytes, escribir programas Java que funcionen con datos o texto de otros programas habría sido un gran dolor. Tendría que cargar enteros, y desplazar yy operaciones para aislar bits individuales, y dividir índices por 4 todo el tiempo. No es divertido.

Así que los bytes no fueron realmente agregados para ahorrar memoria, sino por compatibilidad.

Como un byte puede tener uno de 2 = 256 valores posibles, Sun decidió que deberían denotar -128 a 127, en lugar de 0 a 255, porque no querían tener que firmar y no firmar números (todos sus tipos de datos están firmados, y Java no tiene la palabra clave unsigned como C/C++)

Utilizaron complemento de dos porque es la forma estándar de tratar con números negativos.