2.2 Representación de Datos


Cómo ve la información el CPU, en los distintos tipos de datos:

  1. Números enteros sin signo
  2. Números enteros con signo
  3. Caracteres
  4. Punto flotante
  5. Arreglos
  6. Cadenas

Números enteros sin signo

  • Tipos "unsigned" de C
  • Representan solamente la magnitud, en forma binaria.

 

Permiten almacenar números desde 0 hasta (2n) - 1

n se refiere al número de bits usados para representarlo

  • Números de 1 byte sin signo: 0 a 255: unsigned char
  • Números de 2 bytes sin signo: 0 a 65,535: unsigned short
  • Números de 4 bytes sin signo: 0 a 4,294,967,295: unsigned long

 

Números enteros con signo

  • Los más usuales, "integer", "long".
  • Un bit (el más significativo) es usado para representar el signo.
  • Cuando es 0, el número es positivo
  • Cuando es 1, el número es negativo
  • Permiten almacenar números desde -2(n-1), hasta +(2(n-1)) - 1
  • Byte: -128 a +127
  • Word: -32768 a 32767
  • Double word: -2147,483,648 a +2147,483,647
  • Los números negativos se almacenan usando el complemento a dos del número

 

Complemento a uno

  • Primer paso para el manejo de números negativos
  • Consiste en complementar todos los bits de un número binario
  • Los dígitos 0 se convierten en dígitos 1, y los dígitos 1 se convierten en dígitos 0
    • Se obtiene sumándole uno al complemento a uno
    • Tiene la propiedad de que si sumamos un número binario con su complemento a dos, nos da 0

 

Complemento a dos

  • Se obtiene sumándole uno al complemento a uno
  • Tiene la propiedad de que si sumamos un número binario con su complemento a dos, nos da 0. 

 

Representación de caracteres

Es una abstracción de datos

  • El CPU solamente sabe procesar números
  • Otros datos deben representarse en términos numéricos

 

Código de carácter: define una tabla de correspondencias entre caracteres y números asignados

  • EBCDIC: Extended Binary Coded Decimal Interchange Code (Código extendido binario codificado decimal), usado en Mainframes.
  • ASCII: American Standard Code for Information Interchange ( Código estándar americano para el intercambio de información ) es de 7 bits (0 a 127), en PC's se extiende a 256

 

Punto flotante 

Es una representación de los números reales. Utiliza para su representación 32 bits (palabra doble), 64 (palabra cuádruple).

El formato precisión simple utiliza los 32 bits de la siguiente manera:

  • 1 bit para signo,
  • 8 bits para el exponente,
  • 23 bits para la precisión.

 

El rango de los números a representar, en los positivos, es desde 1.18 x 10^-38 a 3.40 x 10^38). Y equivalentemente, en los negativos.

El formato precisión doble utiliza los 64 bits de la siguiente manera:

  • 1 bit para signo,
  • 11 bits para el exponente,
  • 52 bits para la precisión.

 

El rango de los números a representar, en los positivos, es desde 2.23 x 10^-308 a 1.79 x 10^308). Y equivalentemente, en los negativos.

 

Arreglos

El arreglo es un tipo de datos estructurado formado por una colección finita de elementos ordenados, todos del mismo tipo. El acceso se realiza mediante un índice que permite especificar cuál es el elemento deseado dando su posición en la colección.

Un byte es la unidad de memoria que se asigna para almacenar un valor. En el caso de un arreglo las sentencias de declaración le dicen al compilador cuántos bytes se necesitan para representar el arreglo. Entonces el nombre del arreglo se asocia con las características del mismo, estas son:

  • El límite superior del rango.
  • El límite inferior del rango
  • La posición en memoria del primer byte del arreglo, llamada la dirección base.
  • El número de posiciones de memoria necesarias para cada elemento del arreglo.

 

La función de acceso utiliza esta información para determinar la posición del elemento deseado, usando una simple multiplicación y una suma:

Posición Elemento[i] = Dirección Base + (i - Límite Inferior) * Tamaño Elemento

 

Cadenas

Una cadena es una secuencia de caracteres. Se utiliza para guardar textos. Dado que la longitud es dinámica, se usan algunos bits extras con información sobre la longitud máxima, la longitud real de la cadena o un indicador de fin de cadena.

Por ejemplo, Pascal almacena en el primer byte, el número de caracteres que contiene la cadena. Por ello, la longitud máxima que permite es de 255 caracteres.

C permite cadenas de longitud indefinida, pues codifica la información desde el primer byte, hasta encontrar un carácter nulo (código ASCII 0), que funciona como terminador de cadena.

 

 

 

Inicio