You are on page 1of 16

CAPTULO 04

LOS DATOS
Jorge Herrera Castillo

OBJETIVOS
 Comprender el significado de los tipos de datos en relacin a los formatos de almacenamiento
interno.
 Adquirir el conocimiento bsico de los sistemas numricos relacionados con la informacin digital
que procesan los circuitos de los computadores.
 Aprender los estndares de almacenamiento interno de los datos.
 Comprender el significado de las variables y constantes declaradas en un programa.
 Aprender a convertir datos de un sistema numrico a otro sistema numrico.
 Aprender a realizar las operaciones binarias: suma, resta, multiplicacin, divisin y complemento a
uno y a dos
CONTENIDO

4.1 DEFINICIN

4.2 TIPOS DE DATOS

4.3 CODIFICACIN INTERNA

4.3.1 BITS

4.3.2 BYTES

4.3.3 VALOR POSICIONAL DE LOS DIGITOS

4.4 LOS SISTEMAS NUMRICOS

4.4.1 SISTEMA DECIMAL

4.4.2 SISTEMA BINARIO

4.4.3 SISTEMA OCTAL

4.4.4 SISTEMA HEXADECIMAL

4.4.5 CONVERSIONES ENTRE SISTEMAS

4.4.6 OPERACIONES EN BINARIO

4..5 ESTNDARES PARA LA CODIFICACIN INTERNA

4.6 LOS TIPOS DE DATOS EN LOS LENGUAJES DE PROGRAMACIN

4.7 VARIABLES

4.8 CONSTANTES

4.9 OBJETOS

4.10 EJERCICIOS

34 Fundamentos de Programacin
Profesor Jorge Herrera Castillo
4. 1 DEFINICIN

L
os datos representan hechos, conceptos e instrucciones organizados de tal manera que permiten su
comunicacin, interpretacin, almacenamiento y procesamiento por seres humanos o por medios
automticos, como el computador. Para el caso del computador esta organizacional definen los tipos de
datos. En las siguientes secciones explicaran con mayor detalle lo relacionado con los tipos de datos.

4.2 TIPOS DE DATOS


Los tipos de datos especifican el dominio (rango de valores) y de un conjunto de operaciones para la
manipulacin de este conjunto de valores. En general todo lenguaje de programacin de alto tiene un conjunto
de tipos de datos para la definicin de los diferentes elementos que componen los programas. Estos tipos de
datos pueden estar predefinidos por el compilador del lenguaje (tipos primitivos) y los definidos por el
programador tomando como unidades de construccin los tipos primitivo.

Son tipos primitivos (bsicos) los que representan a los:

Enteros (byte, short, int, long)


reales (float, double)
caracteres (char)

Son tipos definidos por el programador (los ms comunes):

Las estructuras (struct),


Los enumerados (enum),
Las clases (class).

4.3 CODIFICACIN INTERNA


4.3.1 BITS
Los datos en los dispositivos internos del computador se representan por una codificacin binaria, es decir que
cada unidad mnima es cero ( 0 ) o uno ( 1 ). Esta unidad mnima se denomina BIT (BInary DigiT).

1 Bits representa dos valores: 0


1 21 = 2

2 Bits representa cuatro valores 00


01
10
11 22 = 4

3 Bits representa ocho valores 000


001
010
011
100
101
110
111 23 = 8

Universidad Industrial de Santander 35


Escuela de Ingeniera de Sistemas e Informtica
En general, para un cdigo de N bits, se pueden representar 2N valores (un rango de valores entre 0 y 2N-1).
Por ejemplo, para un cdigo binario de 8 bits se pueden representar 256 valores (un rango de 0 a 255).

4.3.2 BYTE
Un byte es un cdigo binario de ocho bits y es la unidad mnima para representar un dato, como un carcter o
un entero.

Los lenguajes de programacin como el C++, Java y C# tienen en su


conjunto de tipos de datos al tipo byte.

4.3.3 VALOR POSICIONAL DE LOS DIGITOS

En un dato cada digito tiene un peso segn la posicin que ocupa. Por
ejemplo el dato 2067 el 2 tiene ms peso que el 7 porque cada unidad
porque cada unidad en que vare el 2 el dato se afecta en 1000 (caso
sistema decimal). Para el sistema binario:

Sea N = B4 B3 B2 B1 B0

El equivalente decimal = Bi * 2i

Ejemplo, el cdigo binario 10011 es equivalente al decimal 19

4.4 LOS SISTEMAS NUMRICOS


Existen varios sistemas numricos para representar los datos, entre los ms comunes estn:

El decimal (base 10).


El binario (base 2).
El octal (base 8).
El hexadecimal (base 16).

4.4.1 SISTEMA DECIMAL


En el sistema decimal (base 10), los pesos asociados a los dgitos son los que se muestran a continuacin:

< 10N ... 102 101 100 >

Por ejemplo 345 = 3*102 + 4*101 + 5*100 = 300 + 40 + 4


En general cualquier dato entero se puede expresar mediante el polinomio:

i = n 1 j =m
N b = i =0 ai b i + j =1 a j b j

donde: b = la base del sistema, 0 ai b-1, 0 aj b-1 , m = nmero de dgitos parte fraccionaria.

Para el sistema decimal: b = 10, ai = aj = < 0, 1, 2, 3, 4, 5, 5, 6, 7, 8, 9 >

258.67 = 2*102 + 5*101 + 8*100 + 6*10-1 + 7*10-2 = 200 + 50 + 8 + 0.6 + 0.07

36 Fundamentos de Programacin
Profesor Jorge Herrera Castillo
4.4.2 SISTEMA BINARIO
El sistema binario (base = 2) los pesos de los dgitos estn asociados a su posicin.

i = n 1 j =m
N 2 = i =0 ai 2 i + j =1 a j 2 j Equivalente
en el sistema
decimal
ai = aj = < 0, 1 >

(10011)2 = 1*24 + 0*23 + 0*22 + 1*21 + 1*20 = 16 + 0 + 0 + 2 + 1 = (19)10

4.4.3 SISTEMA OCTAL


El sistema octal (base = 8) los pesos de los dgitos estn asociados a su posicin.

i = n 1 j =m
N 8 = i = 0 ai 8 i + j =1 a j 8 j

ai = aj = < 0, 1, 2, 3, 4, 5, 6, 7 >

(357.246)8 = 3*82 + 5*81 + 7*80 + 2*8-1 + 4*8-2 + 6*8-3

100111001110101011 nmero binario


4 7 1 6 5 3 nmero octal

4.4.4 SISTEMA HEXADECIMAL


El sistema hexadecimal (base 16) los dgitos estn asociados a su posicin.

i = n 1 j =m
N 2 = i =0 ai 16 i + j =1 a j 16 j

ai = aj = < 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F >

(CDAE) = 12*163 + 13*162 + 10*161 + 14*160

(101111110111)2 = ( BF7 )16

4.4.5 CONVERSIONES ENTRE SISTEMAS

4.4.5.1 Conversin de binario a decimal


La conversin binario a decimal es muy sencilla, basta con sumar todos los pesos asociados a los bits que
estn a 1.
Ejemplo 1

Convertir el nmero binario 10100 a decimal

Pesos: 16 8 4 2 1
1 0 1 0 0 = 16 +4 = 20 Entonces 10100 es igual 20

Universidad Industrial de Santander 37


Escuela de Ingeniera de Sistemas e Informtica
25 21
Ejemplo 2
20
Convertir el nmero binario 10101111 a decimal.

128 64 32 16 8 4 2 1 Pesos

1 0 1 0 1 1 1 1 Nmero binario

128 + 0 + 32 + 0 + 8 + 4 + 2 + 1 = 175

Para la conversin de nmeros binarios se procede de la misma manera, basta tener en cuenta tambin los
pesos de los dgitos fraccionarios.

Ejemplo 3

Convertir el nmero binario 11101.11 a decimal.

24 23 22 21 20 2-1 2-2
16 8 4 2 1 0.5 0.25 Pesos

1 1 1 0 1 . 1 1 Nmero binario

16 + 8 + 4 + 0 + 1 + 0.5 + 0.25 = 29.75

4.4.5.2 Conversin de decimal a binario


Para convertir un nmero decimal a binario se divide el nmero N por 2, y el cociente que d volver a
dividirlo por 2, y as hasta llegar a un cociente menor que 2; el nmero binario ser el conjunto de los
residuos de las divisiones y el ltimo cociente, en el orden inverso al de aparicin.

Ejemplo 1

Convertir el decimal 37 a binario.

37/2 = 18 residuo: 1

18/2 = 9 residuo: 0

9/2 = 4 residuo: 1

4/2 = 2 residuo: 0

2/2 = 1 residuo: 0

Entonces 37 = 101001

La conversin de un decimal con parte fraccionaria a binario se realiza multiplicando por 2 la parte
fraccionaria ; la nueva parte fraccionaria tambin se multiplica por 2, as hasta que un resultado no tenga parte
fraccionaria o bien hasta la precisin que se determine.

Ejemplo 2

Convertir a binario el decimal 9.6875

Para la parte entera se aplica las divisiones sucesivas 9 = 1001

38 Fundamentos de Programacin
Profesor Jorge Herrera Castillo
Para la parte fraccionaria:

0.6875 x 2 = 1.375 1

0.375 x 2 = 0.75 0

0.75 x 2 = 1.5 1

0.5 x 2 = 1.0 1

Entonces 9.6875 = 1001.1011

4.4.5.3 Conversin de binario a octal


Para convertir un binario a octal simplemente se separa el nmero binario en grupos de tres bits de derecha a
izquierda y pasa los tres bits a decimal.

Ejemplo

Convertir el binario 10011100101011001001110001 a octal.

10 011 100 101 011 001 001 110 001

2 3 4 5 3 1 1 6 1

Entonces (10011100101011001001110001)2 = (234531161)8 = OX234531161

4.4.5.4 Conversin de octal a binario


Para la conversin de octal a binario se toma cada digito octal y se pasa a binario.

Ejemplo

Convertir el nmero octal 26501 a binario.

2 = 010
6 = 110
5 = 101
0 = 000
1 = 001

Entonces (26501)8 = (010110101000001)2

4.4.5.5 Conversin de binario a hexadecimal


Para convertir un binario a hexadecimal simplemente se separa el nmero binario en grupos de cuatro bits de
derecha a izquierda y pasa los cuatro bits a decimal.

Ejemplo

Convertir el nmero binario 100111001010101001111000111001 a hexadecimal.

10 0111 0010 1010 1001 1110 0011 1001

2 7 2 A 9 D 3 9

Universidad Industrial de Santander 39


Escuela de Ingeniera de Sistemas e Informtica
Entonces (100111001010101001111000111001)2 = (272A9D39)16 = HX272A9D39

4.4.5.6 Conversin de hexadecimal a binario


Para la conversin de hexadecimal a binario se toma cada digito hexadecimal y se pasa a binario.

Ejemplo

Convertir el hexadecimal 83A6FE binario.

8 = 1000
3 = 0011
A= 1010
6 = 0110
F = 1111
E = 1110

Entonces (83A6FE) = (100000111010011011111110)2

4.4.6 OPERACIONES EN BINARIO

Los circuitos de los computadores o cualquier otro sistema digital las operaciones se realizan en binario. La
operacin aritmtica fundamental es la suma, puesto que a partir de ella se pueden realizar el resto de
operaciones.

4.4.6.1 Suma binaria

La suma binaria se basa en la tabla siguiente:

0 + 0 = 0
0 + 1 = 1
1 + 0 = 1
1 + 1 = 0 y se lleva 1 (acarreo)

Como se puede observar, cuando se suma 1 + 1 aparece el concepto de acarreo el cual se suma a la siguiente
columna de suma.

Ejemplos
1 Acarreo
1010 1010
+0011 +0011
1101

11 Acarreos
101 1 101
+ 111 + 111

1100

40 Fundamentos de Programacin
Profesor Jorge Herrera Castillo
4.4.6.2 Resta binaria

La resta binaria se basa en la tabla siguiente:

0 - 0 = 0
0 - 1 = 1 y se presta 1 (prstamo)
1 - 0 = 1
1 - 1 = 0

En el caso de 0 1 ocurre algo similar al acarreo de las sumas; se genera un 1 que se lleva a la resta de la
siguiente columna. Este bits que se genera se conoce como bits de prstamo.

Ejemplos

1111 1111
- 0101 - 0101
1010

1101 1101
- 1010 -1010
1
0011
4.4.6.3 Multiplicacin binaria

La multiplicacin binaria se basa en la siguiente tabla:

0 x 0 = 0
0 x 1 = 0
1 x 0 = 0
1 x 1 = 1

La forma de operar con los nmeros es igual a la multiplicacin en el sistema decimal.

Ejemplo

1001 1001
x 101 x 101

1001
0000
1001

101101

4.4.6.4 Divisin binaria

La divisin binaria, al igual que en el sistema decimal, es una combinacin de multiplicacin y resta.

Ejemplo

101101 101

Universidad Industrial de Santander 41


Escuela de Ingeniera de Sistemas e Informtica
Dividendo

101101 101 Divisor


- 101
1001 Cociente
000101
-101

000 Residuo

4.4.6.5 Complementos

Complemento a uno: Lo que le falta a cada digito binario para llegar a uno. El complemento a 1 de 100110
es 011001.

Complemento a 2: Al complemento a 1 se le suma 1.

Ejemplo

1011001 el complemento a 2 ser: A + 1 = 0100110 + 1 = 0100111. Entonces el complemento a dos de


1011001 ser 0100111

4.5 ESTNDARES PARA LA CODIFICACIN INTERNA

4.5.1 DATOS NUMRICOS PUNTO FIJO

Los datos de numricos de formato de punto fijo se utilizan para almacenar en la memoria del computador
valores enteros, sin punto o coma decimal.

4.5.1.1 PRECISIN CORTA


Segn el estndar IEEE 754 el formato de almacenamiento interno para datos de punto fijo de precisin
corta es de 16 bits, un bits para el signo y 15 bits para la magnitud.

4.5.1.2 PRECISIN LARGA

Segn el estndar IEEE 754 el formato de almacenamiento interno para datos de punto fijo de precisin
larga es de 32 bits, un bits para el signo y 31 bits para la magnitud.

42 Fundamentos de Programacin
Profesor Jorge Herrera Castillo
4.5.2 DATOS NUMRICOS PUNTO FLOTANTE
Los datos de numricos de formato de punto flotante se utilizan para almacenar en la memoria del
computador valores reales, con punto o coma decimal.

Real = magnitud*baseexponente

4.5.2.1 PRESICIN SENCILLA


Segn el estndar IEEE 754 el formato de almacenamiento interno para datos de punto flotante de presin
sencilla es de 32 bits, distribuidos as:

 Un (1) bits para el signo ( 0 = positivo, 1 = negativo)


 Ocho (8) bits para la caracterstica del exponente
 Veintitrs (23) bits para mantisa

El exponente tiene un desplazamiento de 127. Entonces, Caracterstica = exponente + 127

Ejemplo. Hallar el cdigo binario del empaquetamiento interno del nmero real +420.125

Al convertir a binario el nmero ser: 110100100.001 = 1.10100100001 x 28

Mantisa = 10100100001
Caracterstica = 8 + 127 = 135
Al convertir a binario la caracterstica ser: 10000111

Luego el nmero quedar +420.125 quedar empaquetado como:

1 10000111 10100100001
4.5.2.2 PRECICIN DOBLE
Segn el estndar IEEE 754 el formato de almacenamiento interno para datos de punto flotante de doble
precisin es de 64 bits, distribuidos as:

 Un bits para el signo (0 = positivo, 1 = negativo)


 Once (11) bits para la caracterstica del exponente
 Cincuenta y dos (52) bits para la mantisa

El exponente tiene un desplazamiento de 1024. Entonces caracterstica = exponente + 1024

Universidad Industrial de Santander 43


Escuela de Ingeniera de Sistemas e Informtica
4.5.3 DATOS ALFANUMRICOS
Los datos alfanumricos permiten representar nmeros, letras y signos especiales, existen varios estndares y
entre estos estn:

 El ASCII (American Standard Code for Information Interchange) es un cdigo de siete bits ms un
bit de control de paridad por consiguiente slo permite codificar hasta 128 smbolos diferentes.
 El ASCII Extendido el cual contiene algunos nuevos smbolos extendiendo el cdigo a 8 bits.
 El UNICODE es un cdigo que permite una gran cantidad de smbolos en la actualidad tiene una
codificacin de cerca de cincuenta mil smbolos.
 UTF-8 empaqueta cualquier entero del 0 al 127.

4.6 LOS TIPOS DE DATOS EN LOS LENGUAJES DE PROGRAMACIN


Cada lenguaje de programacin tiene sus propios tipos de datos y segn el compilador el nmero de bytes
para el almacenamiento interno (memoria) puede variar segn el estndar que utilice. Aunque actualmente la
tendencia es utilizar el mismo estndar. A continuacin se presentan los tipos de datos bsicos definidos en el
lenguaje de alto nivel C++.

Tipos de datos del C++ .NET


Tipo Significado Tamao [bytes] Rango de valores
int Dato punto fijo 4 -2147483648 a +2147483647
short Dato punto fijo corto 2 -32768 a +32767
char Dato de caracteres 1 -128 a 127
bool Dato booleano (verdadero y falso) 1
float Dato formato punto flotante 4 -3.402823E+38 a 3.402823E+38
double Dato punto flotante largo 8 -1.79769313486232E+308 a
1.79769313486232E+308

Generalmente los compiladores C++ tiene funciones predeterminadas para hallar el tamao y los rangos de
los valores de los tipos de datos primitivos. A continuacin se presentan dos ejemplo de programas en C++
para hallar el tamao y el rango de valores de los tipos de datos definidos en el compilador C++ de Visual
Studio .NET.

using namespace System;

/**
* Programa para hallar el tamao en bytes de los tipos primitivos
* utilizando la funcin sizeof()
*/
int main(array<System::String ^> ^args)
{
Console::Title="Programa para hallar los tamaos de los tipos primitivos";
Console::BackgroundColor=ConsoleColor::White;
Console::Clear();
Console::ForegroundColor=ConsoleColor::Black;
Console::WriteLine("\n\n\t\tClculo tamao de los tipos de datos bsicos\n");
Console::WriteLine("\t\t\tTamao tipo int = {0} bytes",sizeof(int));
Console::WriteLine("\t\t\tTamao tipo short = {0} bytes",sizeof(short));
Console::WriteLine("\t\t\tTamao tipo char = {0} bytes",sizeof(char));
Console::WriteLine("\t\t\tTamao tipo bool = {0} bytes",sizeof(bool));

44 Fundamentos de Programacin
Profesor Jorge Herrera Castillo
Console::WriteLine("\t\t\tTamao tipo float = {0} bytes",sizeof(float));
Console::WriteLine("\t\t\tTamao tipo double = {0} bytes",sizeof(double));
Console::Write("\n\n\n\t\t\tPulse cualquier tecla para terminar");
Console::ReadKey();
return 0;
}

A continuacin se muestra la ventana de salida al ejecutarse el anterior programa

Ventana salida del programa que calcula los tamaos de los tipos primitivos

A continuacin se presenta un programa en C++ .NET para hallar los rangos de valores que tienen los tipos de
datos primitivos para el compilador donde se desarrolla este programa.

using namespace System;


/*
* Programa para hallar los rangos de
* valores que tienen los tipos
* primitivos
*/
int main(array<System::String ^> ^args)
{
Console::Title="Programa para hallar los rangos de valores tipos primitivos";
Console::BackgroundColor=ConsoleColor::White;
Console::Clear();
Console::ForegroundColor=ConsoleColor::Black;
Console::WriteLine("\n\n\t\t\tRango de valores tipos bsicos\n\n");
Console::WriteLine("\tTipo\tValor mnimo\t\tValor mximo");
Console::WriteLine("\t\t----------------------------------------");
Console::Write("\tint\t");
Console::WriteLine("{0}\t\t{1}",int::MinValue,int::MaxValue);
Console::Write("\tshort\t");
Console::WriteLine("{0}\t\t\t{1}",short::MinValue,short::MaxValue);
Console::Write("\tlong\t");
Universidad Industrial de Santander 45
Escuela de Ingeniera de Sistemas e Informtica
Console::WriteLine("{0}\t\t{1}",long::MinValue,long::MaxValue);
Console::Write("\tchar\t");
Console::WriteLine("{0}\t\t\t{1}",char::MinValue,char::MaxValue);
Console::Write("\tfloat\t");
Console::WriteLine("{0}\t\t{1}",float::MinValue,float::MaxValue);
Console::Write("\tdouble\t");
Console::WriteLine("{0}\t{1}",double::MinValue,double::MaxValue);
Console::Write(L"\n\n\tPulse cualquier tecla para terminar");
Console::ReadKey();
return 0;
}

Ventana de salida del programa que calcula los rangos de los valores de los tipos primitivos

Para que las instrucciones de los programas puedan manipular los datos almacenados en la memoria del
computador es necesario definirlos como:

Variables,
Constantes u
Objetos.

4.7 VARIABLES
Los datos variables son aquellos que cambian de valores durante la ejecucin del programa. En el contexto de
la programacin una variable es un elemento que se declara con un nombre que identifica al dato en la
memoria del computador y un tipo para definirle las caractersticas del los valores de los datos.

En general para cualquier lenguaje de programacin (valido para C++, Java y C#) el formato para la
declaracin de una variable es:

<nombre del tipo de datos> nombre de la variable [= valor inicial];

El valor inicial es opcional.

46 Fundamentos de Programacin
Profesor Jorge Herrera Castillo
Ejemplos de sentencias declarativas de variables:

int contador=0;
double totalVentas=0.0;
float venta,valorUnitario;
int numeroUnidades;

4.8 CONSTANTES
Las constantes son datos cuyos valores permanecen fijos durante la ejecucin del programa. Algunos
lenguajes como el C++ permite definir datos constantes. A continuacin se presenta un ejemplo de programa
donde se declara una constante de tipo int.

#include "stdafx.h"
#include <iostream>
#include <conio.h>
using namespace std;
using namespace System;
/*
* Programa para probar el
* uso de una constante
*/
int main(array<System::String ^> ^args)
{

const int LINEAS=24; Definicin de una constante

for(int i=1;i<=LINEAS;i++)
{
cout<<"Linea "<<i<<endl;
}
getch();
return 0;
}
Si usted intenta escribir una sentencia para modificar el valor LNEAS el compilador le informa que no es
permitido.

4.9 OBJETOS
Los objetos son datos activos, es decir, que adems de los datos tienen la parte relacionada con la
funcionalidad de los datos. Un objeto es una instancia de una clase.

Universidad Industrial de Santander 47


Escuela de Ingeniera de Sistemas e Informtica
Se puede considerar que las clases son tipos de datos diseados e implementados por el programador. En el
diseo e implementacin de una clase se debe considerar:

 La definicin e implementacin de las estructuras de los datos (estructura)


 Las funciones de manipulacin de los datos (funcionalidad)

Lenguajes como: C++, C# y Java permiten implementar clases.

4.9 EJERCICIOS
1) Cul es el significado del trmino BIT?
2) Cul es el nmero mximo de combinaciones binarias que se pueden hacer con 8 bits?
3) Pasar a decimal los nmeros binarios:
a. 1100111000001110101011
b. 10101111
4) Pasar a binario los nmeros decimales:
a. 37
b. 1023
c. 127
d. 23.56
5) Pasar a binario los nmeros hexadecimales:
a. A23BC
b. 34D.C4
6) Pasar a octal los nmero binarios:
a. 1000111110.01110001
b. 1110011000
c. 11.000111100
7) Pasar a decimal los nmeros octales:
a. 345.11
b. 567123.118
c. 111.23
8) Restar 11111001 de 111111111111001
9) Hallar el complemento a 2 del nmero binario 1011100001
10) Hallar el complemento a 9 del decimal 45879
11) Utilizando el mtodo de los complementos realizar la resta decimal de 23456 1345
12) Representar en punto flotante de precisin sencilla el nmero 453.25
13) Representar en punto flotante precisin doble el nmero 4567.875

48 Fundamentos de Programacin
Profesor Jorge Herrera Castillo

You might also like