REPRESENTACIÓN INTERNA DE LOS DATOS

En el mundo real los datos que manejamos se representan mediante letras, números, símbolos, imágenes, sonidos, etc.
Esto se conoce como representación externa de los datos.
Pero si queremos introducirlos en un ordenador, todos estos elementos se deben transformar ó codificar para obtener así su representación interna.
Un ordenador está compuesto fundamentalmente por circuitos electrónicos digitales. Los datos circulan por estos circuitos en forma de impulsos eléctricos.
De forma muy simplificada podemos decir que por un circuito pasa o no pasa corriente y esto lo podemos representar con dos dígitos: 0 y 1.
Todos los datos e información que contiene un ordenador, están representados de forma interna mediante secuencias de ceros y unos.

Un sistema de representación que utiliza solamente dos símbolos ( 0 , 1 ) se llama sistema binario.
Por tanto, los datos tal y como los expresamos de forma natural se deben codificar de forma interna en binario para que puedan ser tratados por el ordenador.
El sistema binario utiliza solamente dos dígitos ( 0 y 1 ) llamados bits.
La palabra bit procede de la unión de las palabras binary digit.
Un bit es la unidad mínima de representación de información.
Utilizando 1 bit podremos solamente representar dos valores posibles: 0, 1.
Utilizando 2 bits podemos representar 4 valores: 00, 01, 10, 11.
Utilizando 3 bits podemos representar 8 valores:
000, 001, 010, 011, 100, 101, 110, 111.
Utilizando 4 bits podemos representar 16 valores:
0000, 0001, 0010, 0011, 0100, 0101, 0110, 0111.
En general, utilizando N bits podremos representar 2N valores.
Ocho bits forman un byte.
El byte es la unidad básica de medida de la información.
Un byte es la cantidad más pequeña de información que el ordenador puede manejar.  
Con un byte se pueden representar 28 = 256 caracteres.
En el interior del ordenador los datos se transmiten y almacenan en grupos de bytes llamados palabras.
La longitud de palabra depende de cada tipo de ordenador: 8, 16, 32, 64.

TIPOS DE DATOS EN JAVA

Un dato siempre lleva asociado un tipo de dato, que determina el conjunto de valores que puede tomar.
En Java toda la información que maneja un programa está representada por dos tipos principales de datos:
  • Datos de tipo básico o primitivo.
  • Referencias a objetos.
Los tipos de datos básicos o primitivos no son objetos y se pueden utilizar directamente en un programa sin necesidad de crear objetos de este tipo. La biblioteca Java proporciona clases asociadas a estos tipos que proporcionan métodos que facilitan su manejo. 
Los tipos de datos primitivos que soporta Java son:
Tipo de dato
Representación
Tamaño (Bytes)
Rango de Valores
Valor por defecto
Clase Asociada
byte
Numérico Entero con signo
1
-128 a 127
0
Byte
short
Numérico Entero con signo
2
-32768 a 32767
0
Short
int
Numérico Entero con signo
4
-2147483648 a 2147483647
0
Integer
long
Numérico Entero con signo
8
-9223372036854775808 a 9223372036854775807
0
Long
float
Numérico en Coma flotante de precisión simple Norma IEEE 754
4
± 3.4x10-38 a ± 3.4x1038
0.0
Float
double
Numérico en Coma flotante de precisión doble Norma IEEE 754
8
± 1.8x10-308 a ± 1.8x10308
0.0
Double
char
Carácter Unicode
2
\u0000 a \uFFFF
\u0000
Character
boolean
Dato lógico
-
true ó false
false
Boolean
void
-
-
-
-
Void

DATOS NUMÉRICOS ENTEROS
En Java los representan los tipos: byte, short, int, long.
El tipo de dato numérico entero es un subconjunto finito de los números enteros del mundo real. Pueden ser positivos o negativos.
Ejemplo de declaración de variables enteras:
int a;
byte n1, n2;
short x;
DATOS NUMÉRICOS REALES
En Java los representan los tipos: float, double.
El tipo de dato numérico real es un subconjunto finito de los números reales. Siempre llevan un punto decimal y también pueden ser positivos o negativos. Los números reales tienen una parte entera y una parte decimal.
Por ejemplo: 0.08   -54.0001
Ejemplo de declaración de variables reales:
float peso;
double longitud;
float altura = 2.5F;
double area = 1.7E4; // equivale a 1.7 * 104
double z = .123; //si la parte entera es 0 se puede omitir
DATOS DE TIPO CARÁCTER
En Java se representa con el tipo char.
Un dato de tipo carácter se utiliza para representar un carácter dentro del rango \u0000 a \uFFFF (números desde 0 hasta 65535) en Unicode.
En realidad un dato de tipo char contiene un número entero dentro del rango anterior que representa un carácter.
En Java se utiliza el código Unicode para la representación de caracteres. Este código actualmente representa los caracteres de la mayoría de idiomas escritos en todo el mundo.
Los 127 primeros caracteres de Unicode corresponden al código ASCII.
El Código ASCII (American Standard Code for Information Interchange o Código Estándar Americano para el Intercambio de Información) asigna valores numéricos a las letras, números, signos de puntuación y algunos otros caracteres especiales.
ASCII incluye 256 códigos divididos en dos conjuntos, estándar y extendido, de 128 cada uno. El conjunto ASCII básico, o estándar, utiliza 7 bits para cada código, lo que da como resultado 128 códigos de caracteres desde 0 hasta 127.
El conjunto ASCII extendido utiliza 8 bits para cada código, dando como resultado 128 códigos adicionales, numerados desde el 128 hasta el 255.
En el conjunto de caracteres ASCII básico, los primeros 32 valores están asignados a los códigos de control de comunicaciones y de impresora (caracteres no imprimibles) empleados para controlar la forma en que la información es transferida desde una computadora a otra o desde una computadora a una impresora. En este grupo están los códigos correspondientes a la barra espaciadora (SP por space), la tecla ENTER de retorno de carro a un nuevo renglón (CR por carry return), etc. También existen caracteres de control usados en teleprocesamiento, como ser ACK (Acknowledge - aviso de mensaje recibido), BEL (bell - aviso por señal sonora), ETX (end of text – fin de texto), STX (start of text – comienzo de texto), etc.
Los 96 códigos restantes del código básico corresponden a los caracteres imprimibles y se asignan a los signos de puntuación corrientes, a los dígitos del 0 al 9 y a las letras mayúsculas y minúsculas del alfabeto latino.
Los códigos correspondientes al ASCII extendido, del 128 al 255, se asignan a aquellos caracteres que no pertenecen al alfabeto anglosajón, por ejemplo, las vocales con tilde, la ñ, y en general todos los caracteres especiales que utilizan los distintos lenguajes.

Debido a lo limitado de su tamaño, el código ASCII no es suficiente para representar caracteres de alfabetos como el Japonés, Chino o árabe. La solución a este problema ha sido crear un código más grande con el que poder representar cualquier carácter de cualquier idioma: el código Unicode.
El código UNICODE proporciona una única representación numérica para cada símbolo, independientemente del ordenador, el programa o el lenguaje de programación que se use.
La codificación Unicode se ha transformado en un estándar adoptado por las principales empresas de hardware y software. Java utiliza la codificación Unicode.
La descripción completa del estándar y las tablas de caracteres están disponibles en la página web oficial de Unicode http://www.unicode.org/. La referencia completa se publica, además, en forma de libro impreso cada vez que se libera una nueva versión principal. La versión digital de este libro está disponible de forma gratuita.
Ejemplo de declaración de variables de tipo carácter:
char car;
char letra1 = 'z';
char letra = '\u0061'; //código unicode del carácter ‘a’
DATOS DE TIPO LÓGICO
Se representan con el tipo boolean.
Los datos de este tipo sólo pueden contener dos valores: true (verdadero) ó false (falso).
Ejemplo de declaración de variables lógicas:
boolean primero;
boolean par = false;
Los tipos de datos lógicos son también conocidos como booleanos en honor del matemático inglés George Bool, que desarrolló la teoría conocida como álgebra de bool que fue la base para la representación de los circuitos lógicos.