Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Lectura fundamental
Representación y procesamiento de
información en dispositivos digitales
Contenido
5 Resumen
Palabras clave: sistema binario, tipos de datos, representación de información, variable, Java.
1. Representación y procesamiento de información en dispositivos digitales
En esta Lectura fundamental se discuten los conceptos y mecanismos fundamentales empleados en los
dispositivos digitales para representar, almacenar y procesar información de diferentes tipos.
Finalmente, la sección 3 presenta los tipos de datos numéricos y lógicos primitivos del lenguaje Java. Para
cada tipo se indica su tamaño en memoria, el conjunto de valores que puede representar y las operaciones
básicas que soporta. Adicionalmente, se introducen los conceptos de literal y variable, que serán usados
con frecuencia en las lecturas subsecuentes.
Un disco duro consiste en un conjunto de platos magnéticos de igual tamaño, que están alineados
y giran alrededor de un mismo eje gracias a un motor. Cada plato está dividido en pistas (discos
concéntricos delgados) y, a su vez, cada pista está dividida en sectores. La información en los sectores
es escrita y leída por un cabezal (uno por cada cara de cada plato), el cual se desplaza en dirección
radial hacia adentro y hacia afuera, lo que, en conjunto con el movimiento giratorio del plato, le
permite acceder a todas las posiciones de este.
POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 2
El cabezal nunca toca la superficie del plato, sino que, desde una distancia mucho menor al grosor de un
cabello, altera o captura la orientación del campo magnético de una sección microscópica de un sector.
La orientación de dicho campo magnético puede ser positiva o negativa (Al Mamun, Guo y Chao, 2006).
La figura 1 muestra un disco duro descubierto evidenciando cada una de sus partes.
Cluster de Sector
4 Sectores Pista (zona blanca)
Figura 1. Partes principales de un disco duro. (a) Platos, cabezales y motor. (b) Pistas y sectores
Fuente: elaboración propia
Los DVD, CD, discos Blu-ray y similares conforman el conjunto de dispositivos de almacenamiento
óptico. A diferencia de lo que ocurre en los discos duros, un disco óptico contiene una única pista
en forma de espiral; no obstante, esta no es la principal diferencia entre los dos tipos de dispositivos.
En los discos ópticos, cada una de las secciones microscópicas que los conforman puede ser de uno
de dos tipos, de acuerdo con su relieve: pozos o llanos. Un lector de estos discos dispara haces de
luz sobre las secciones de interés y mediante un fotorreceptor captura su reflejo. A partir de esto, el
lector puede determinar si al moverse de una sección a la siguiente ocurrió un cambio de relieve (pozo
después de llano o llano después de pozo) o no. La figura 2 muestra un fragmento de la superficie
de un CD donde se observan los pozos (áreas oscuras) y los llanos (áreas claras) que codifican la
información; nótese que las secciones son parte de una única pista en forma de espiral.
POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 3
Figura 2. Superficie de un CD
Fuente: elaboración propia
2.4. El microprocesador
POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 4
CP[1]
CARRY IN
CP[2] CP[0]
A[0]
5
1 W 6 OUT[0]
4 2
B[0] 3 3 OUT[1]
2 4
1 5
13 6
12 7
11 8 CARRY ON
10 A
9 B
8 C
A[0]
5 6
1 W
B[0] 4 2
3 3
2 4
1
13 5
12 6
11 7
8
10 A
9 B
8 C
Figura 3. Circuito lógico de una unidad lógico-aritmética básica de un procesador de dos bits
Fuente: (s.a.) (s.f.)
POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 5
Note que, independientemente del tipo de tecnología en que estén basados, los dispositivos de
almacenamiento y cómputo representan la información por medio de dos estados: orientación del
campo magnético positiva o negativa, cambio o conservación de relieve, existencia o ausencia de
agujero, y la existencia o no de campo o corriente eléctrica. Para contar con un esquema universal de
representación de la información, cada pareja de estados es traducida a 1 y 0, que, como ya se dijo en
la Lectura fundamental anterior, forman el alfabeto del computador.
El computador conoce solamente los dígitos 0 y 1, pero estos dos son suficientes para representar
cantidades de manera similar a como se hace en el sistema decimal. Este sistema, que se describirá a
continuación, es llamado sistema binario. Es común referirse a los dígitos del sistema binario usando
la palabra bit (abreviación del término inglés binary digit).
En el sistema binario cada número natural es escrito como una secuencia de 1’s y 0’s. El valor
representado por la secuencia se calcula como la suma de los productos de cada dígito por su
correspondiente potencia de dos, iniciando de derecha a izquierda y en 20. Por ejemplo, el valor 46
puede escribirse en binario como:
1 0 1 1 1 02
↑ ↑ ↑ ↑ ↑ ↑
25 24 23 22 21 20
1 * 25 + 0 * 24 + 1 * 23 + 1 * 22 + 1 * 21 + 0 * 20 = 32 + 0 + 8 + 4 + 2 + 0 = 46.
POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 6
La tabla 1 muestra los primeros once números naturales representados en el sistema binario. En
adelante, para distinguir el sistema en que se encuentran escritos los números, en el sistema binario
estos finalizarán con un 2 como subíndice.
Decimal 0 1 2 3 4 5 6 7 8 9 10
Binario 02 12 102 112 1002 1012 1102 1112 10002 10012 10102
Para representar los números negativos se usa el símbolo - (menos), al igual que en el sistema decimal.
Para indicar que un número tiene una parte fraccional se usa el punto (.), como sucede en el sistema
decimal. La diferencia está en que cada dígito después del punto debe ser multiplicado por una
potencia negativa de 2 y no de 10. Por ejemplo, el número 3.625 es representado como:
1 1. 1 0 12
↑ ↑ ↑ ↑ ↑ ↑
21 20 2-1 2-2 2-3
1 * 21 + 1 * 20 + 1 * 2-1 + 0 * 2-2 + 1 * 2-3 = 2 + 1 + 0.5 + 0 + 0.125 = 3.625.
POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 7
4. Tipos de datos en Java
En programación, un dato es la unidad atómica de información. Este puede ser de diferentes tipos:
numérico, lógico, símbolo, entre otros. De acuerdo con su tipo, el computador asigna una cantidad
limitada de memoria para almacenarlo. Esta cantidad de memoria, denominada el tamaño del tipo,
corresponde a la cantidad de bits con que se cuenta para representar el dato, independientemente del
dispositivo de almacenamiento físico.
El tamaño de un tipo de dato limita la cantidad de valores diferentes que puede tener un dato de
dicho tipo. Por ejemplo, si un tipo de dato tiene un tamaño de 8 bits, el número de valores diferentes
que lo conforman es 256. En general, un tipo de tamaño n bits contiene 2n valores distintos.
A continuación, se introducen los tipos de datos existentes en el lenguaje de programación Java, así
como también sus propiedades y las operaciones sobre ellos. Estos forman el conjunto llamado tipos
de datos primitivos.
Java cuenta con cuatro tipos de datos diferentes para representar números enteros: byte, short,
int y long (Oracle Inc., 2015). La diferencia entre ellos radica en su tamaño y, por tanto, en el rango
y la cantidad de valores que pueden ser usados en cada uno. La tabla 2 presenta las generalidades de cada
tipo y la tabla 3 resume algunos atributos de objetos del mundo real que pueden ser representados con
cada uno.
POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 8
Tabla 3. Ejemplos de atributos de objetos del mundo real que pueden ser representados con cada tipo de dato entero
Tipo Aplicaciones
• Número de hijos
• Población mundial
long
• Número de bacterias en el cuerpo humano
POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 9
A pesar de las aplicaciones presentadas en la tabla 3, si la cantidad de datos que debe mantener en
memoria un programa no es muy grande, se prefiere usar el tipo de dato int aún para valores pequeños.
4.1.1. Literales
Un literal es la representación en código Java de un valor fijo. En el caso de los valores enteros, estos
son representados usando el sistema decimal, no obstante, su representación interna use el sistema
binario. Los siguientes son ejemplos de literales Java válidos: 123, 0, -10, -123456789, 99999999.
Por defecto, todo literal entero es interpretado como int. Esto es una causa común de errores
cuando se desea usar valores fuera del rango del tipo int esperando que sean tratados como
valores de tipo long. En este caso, debe incluirse, al finalizar el literal, la letra L para indicar que
debe interpretarse como long. Ejemplos de literales de este tipo son 100000000000000L,
98765432109876543L y -9223372036854775808L.
4.1.2. Variables
Una variable es el nombre asignado a un espacio de la memoria para albergar un dato de un tipo
específico. Adicionalmente, y como su nombre lo indica, el valor almacenado en una variable puede
cambiar durante la ejecución del programa.
<tipo> <nombre>;
<tipo> es cualquier de los tipos de datos vistos hasta ahora o que verá más adelante.
<nombre> es el nombre que desea darle a la variable. El nombre de una variable debe satisfacer las
siguientes condiciones:
• No puede ser una de las palabras reservadas del lenguaje (como por ejemplo byte, short,
int o long).
• Puede contener únicamente letras, dígitos, guiones bajos (_) y signos de dólar ($). El primer
símbolo del nombre no puede ser un dígito.
POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 10
Algunos ejemplos de declaraciones de variables (con nombres válidos) son:
int salario;
byte edad;
short goles_anotados;
long numeroMuyGrande;
Es posible también declarar múltiples variables en una misma instrucción separando sus nombres por comas:
En el lenguaje Java, el punto y coma (;) indica el fin de una instrucción, de manera similar a como el
punto (.) indica el fin de una oración en español.
Finalmente, se debe tener en cuenta que en el lenguaje Java las letras en minúscula son diferentes
a las letras en mayúscula. Por tanto, Numero, numero y NuMeRo corresponden a nombres de
variables diferentes. En el mismo orden de ideas, es posible (aunque no muy recomendable) tener una
variable llamada INT.
Para asignar un valor inicial o modificar el valor contenido en una variable se usa el operador de
asignación (=). La sintaxis de este operador es la siguiente:
<nombre> = <expresión>
salarioJuan = 100000;
salarioDavid = 120000;
POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 11
También es posible combinar la declaración y asignación en una misma línea, por lo que cada uno de
los dos fragmentos de código siguientes es equivalente al anterior:
salarioJuan = 100000;
Los tipos de datos enteros soportan las operaciones aritméticas básicas de negación, suma, resta,
multiplicación, división y residuo (módulo). La notación usada para escribir expresiones usando estas
operaciones es la notación infija, tradicionalmente usada en matemáticas. Para agrupar fragmentos
de la expresión se usa paréntesis; el uso de corchetes o llaves no es permitido. La tabla 4 presenta las
operaciones aritméticas básicas soportadas por los tipos de datos enteros, así como los símbolos que
las representan y un ejemplo de su uso.
Multiplicación (x) * m x (n + p) m * (n + p)
POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 12
Tenga en cuenta que el operador de división (/) corresponde a división entera, por tanto, su resultado
será siempre entero.
Además de las operaciones aritméticas, también es posible realizar operaciones de comparación entre
enteros. La tabla 5 introduce estas operaciones en el lenguaje Java.
Java cuenta con dos tipos de datos para representar números reales: float y double (Oracle Inc.,
2015). La diferencia entre ellos radica en su tamaño y, por tanto, en el rango y la cantidad de valores
que pueden ser usados en cada uno. Debido a la forma en que los números reales son representados
internamente en la computadora, cada tipo de dato puede garantizar diferente cantidad de cifras
significativas de sus valores. La tabla 6 presenta las generalidades de cada uno de estos tipos.
POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 13
Tabla 6. Tamaños, rangos, valores más pequeños y número de cifras significativas para los tipos de datos reales en Java
Debido a la amplitud de los rangos de valores que pueden ser representados por los dos tipos, en la
gran mayoría de las aplicaciones el rango no es determinante para decidir cuál tipo de dato usar. Esta
decisión depende en general de la cantidad de datos que se desee almacenar y la precisión de los
cálculos realizados. En casos en que no se requiera una precisión mayor a la ofrecida por el tipo float,
pero la cantidad de datos a almacenar sea pequeña, se recomienda el uso del tipo double.
4.2.1. Literales
Al igual que en los enteros, los literales de tipo real en Java se representan usando el sistema decimal.
Para separar la parte entera de la parte fraccional se usa el punto (.).
Por defecto, los literales reales son interpretados como double y, similar a lo que pasa con el tipo
long, si desea que un literal sea interpretado por la máquina como de tipo float, debe incluir al final
del literal la letra F. Aunque no es necesario, por claridad del código, también es posible incluir al final
del literal la letra D para hacer énfasis en que es de tipo double.
Finalmente, cuando los números son muy grandes o muy pequeños es posible usar notación científica
para expresar los valores en forma sucinta. Para esto, se usa el símbolo E, el cual debe ser leído como
“por diez a la”. Algunos ejemplos de literales de tipo float y double son: 1.2345F, 1.2345D,
12345E-4F, 12345E100.
POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 14
4.2.2. Variables: declaración y asignación
La declaración de variables de tipos reales sigue las mismas reglas de la declaración de variables de
tipos enteros. Más aún, la sintaxis y tratamiento del operador de asignación son idénticos.
Los operadores aritméticos y relacionales de los tipos de datos reales son los mismos presentados
para los tipos de datos enteros en las tablas 4 y 5, con una evidente excepción: la división entre
valores reales da un cociente real y, por tanto, no existe el concepto de residuo. Dicho de otra forma,
con excepción del operador de residuo (%), todos los operadores que existen para números enteros
también aplican para números reales.
Note que las operaciones relaciones de los números no dan como resultado otro número. Su
resultado es un valor booleano. El conjunto de valores booleanos, también conocidos como valores
lógicos, está compuesto por dos elementos: verdadero y falso. Dado que la computadora solamente
es capaz de representar números, internamente un valor booleano se representa con un número
entero que es interpretado por la máquina como falso o verdadero de acuerdo a si es igual o diferente
de 0, respectivamente. El tipo de dato Java para valores booleanos es boolean (Oracle Inc., 2015).
Un dato de tipo boolean puede ocupar desde 8 hasta 32 bits de memoria. Esto se debe a temas
propios del diseño del lenguaje que están fuera del alcance de esta Lectura fundamental.
4.3.1. Literales
Java cuenta con dos palabras reservadas como literales del tipo boolean:true para verdadero y
false para falso. Es importante recordar que Java es sensible a las minúsculas y mayúsculas y por tanto
TRUE y FALSE no son tomados como literales booleanos.
POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 15
4.3.2. Variables: declaración y asignación
La declaración de variables de tipo lógico sigue las mismas reglas de la declaración de variables de
tipos numéricos. Más aún, la sintaxis y tratamiento del operador de asignación son idénticos.
El tipo boolean soporta las operaciones lógicas de conjunción, disyunción, negación, equivalencia y
disyunción exclusiva. En la tabla 7 se exponen estas operaciones lógicas, así como los símbolos que las
representan y un ejemplo de su uso.
Negación (¬) ! ¬p !p
Los operadores aritméticos, relacionales y lógicos de los tipos de datos anteriormente presentados pueden ser
combinados en una única expresión bien definida. Para poder evaluar la expresión de acuerdo con la intención
del programador, la computadora requiere de un conjunto de reglas que le indiquen en qué orden deben
realizarse las operaciones y así suprimir la ambigüedad del lenguaje. Dichas reglas se resumen a continuación:
POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 16
• Todo conjunto de operaciones que se encuentre comprendido entre una pareja de paréntesis
debe realizarse primero que las operaciones fuera de los paréntesis.
5. Resumen
Independientemente de su estructura física, los dispositivos de almacenamiento y procesamiento
de información comunes representan la información mediante dos estados: orientación de campo
magnético positiva o negativa, cambio o conservación de relieve, existencia de agujero, existencia
de campo o corriente eléctrica, entre otros. El lenguaje binario permite unificar el esquema de
representación de estos dispositivos reduciendo las parejas de estados a los símbolos 1 y 0.
POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 17
El sistema binario representa cantidades tanto enteras como reales de manera similar a como se hace
en el sistema decimal. Cada dígito de una secuencia binaria es llamado bit, palabra que resulta de
abreviar el término inglés binary digit.
Java cuenta con un conjunto amplio de tipos de datos que incluyen los conjuntos numéricos básicos y
el conjunto de valores booleanos:
• Los tipos de datos enteros son: byte, short, int y long. La principal diferencia entre ellos radica en el
espacio que ocupan en memoria y, por tanto, en el rango de valores diferentes que pueden representar.
• Los tipos de datos reales son: float y double. Además de la extensión del rango de valores que
manejan, una diferencia fundamental entre estos dos tipos de datos es la cantidad de cifras
significativas que mantienen del número.
• El nombre del tipo de dato booleano en Java es boolean. Dado que, por su arquitectura física,
el computador solamente puede representar números, un booleano internamente no es más
que un número que representa falso o verdadero de acuerdo a si es igual o diferente de cero,
respectivamente.
Los datos en un programa Java pueden ser valores fijos explícitos en el código fuente, llamados
literales o variables. Una variable es el nombre asignado a un espacio de la memoria para albergar
un dato de un tipo específico. El valor almacenado en una variable puede ser modificado durante la
ejecución del programa mediante el operador de asignación.
POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 18
Referencias
Al Mamun, A., Guo, G. y Chao, B. (2006). Hard Disk Drive: Mechatronics and Control. CRC Press.
Oracle Inc. (2015). Language Basic. The Java ™ Tutorials. Recuperado de https://docs.oracle.com/
Javase/tutorial/Java/nutsandbolts/index.html.
POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 19
INFORMACIÓN TÉCNICA
POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 20