Pregunta

El Java tipo de datos byte por ejemplo sostiene datos de -128 a 127 en un único byte en el almacenamiento. Para habilitar a distingush entre - 1 a -128 de 0 a 127 requeriría datos adicionales que tendría el tipo de datos obver su almacenamiento asignado. Es cierto que sólo se requeriría 1 bit extra, pero todavía va más.

¿Cómo hacer esto java?

¿Fue útil?

Solución

complemento a dos:

  

Los tipos primitivos se definen a ser el mismo en todas las máquinas y en todas las implementaciones, y varios tamaños de números enteros en complemento a dos, 754 números de punto flotante estándar de una y doble precisión IEEE, un tipo booleano, y una Unicode tipo de carácter carbón. - La especificación del lenguaje Java: Introducción

Puede imaginarlo como un número entero de 0 a 255 a partir del cual 128 es siempre sustraído.

Más técnica: un número entero puede (y lo harán) ser negado (positivo → versa negativo o vice) mediante la inversión de sus bits y la adición de uno. Este es casi de un complemento ( que simplemente se invierte todos los bits de ahí complementar pero complemento de uno tiene el problema de que tiene dos ceros diferentes:. +0 y -0 (números de punto flotante tienen que también, sino por otras razones y ☺ más útil) complemento a dos soluciona esto. mediante la adición de uno, y ampliando así el rango de valores negativos (que es por eso que es -128 .. 127).

De alguna manera que se podría decir que el signo es de hecho "almacenada" en el primer bit de la serie. Por lo que su observación de que se necesita un poco de almacenamiento es correcta. Sin embargo, el rango numérico de un byte (positivo o negativo, haciendo caso omiso de la señal) sólo tiene 7 bits, por lo que tiene un byte de nuevo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top