Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
8 de mayo de 2020
1. INTRODUCCIÓN.
El sistema de numeración binario y los códigos digitales son fundamentales en
las computadoras y, en general, en la electrónica digital. En la presente práctica
está enfocada principalmente al sistema de numeración decimal y sus relaciones
con otros sistemas de numeración tales como el binario, hexadecimal y octal.
Se cubren las operaciones aritméticas en la sección Resultados con conversio-
nes entre los diferentes sistemas de conversión de números con el fin de propor-
cionar una base para entender cómo trabajan algunos equipos como las compu-
tadoras y muchos otros tipos de sistemas digitales.
1
Figura 1: Ejemplo de la representación de dos dı́gitos decimales.
Para números fraccionarios, los pesos son las potencias negativas de diez
que decrecen de izquierda a derecha comenzando por 10− 1 separándolos por
una coma decimal como se denota a continuación
2
Figura 2: Tabla 1.
Una aplicación.
Aprender a contar en binario le ayudará a entender básicamente cómo pue-
den utilizarse los circuitos digitales para contar sucesos. Puede tratarse de cual-
quier cosa, desde elementos que contar en una lı́nea de montaje hasta operacio-
nes de recuento en una computadora. Tomemos un sencillo ejemplo para contar
las pelotas de tenis que se desplazan por una cinta transportadora hasta meterse
en una caja
3
ros hexadecimales u octales. El sistema hexadecimal se usa frecuentemente en
computadoras y aplicaciones de microprocesadores.
El sistema hexadecimal es un sistema en base dieciséis, es decir, está formado
por 16 caracteres numéricos y alfabéticos. La mayorı́a de los sistemas digitales
procesan grupos de datos binarios que son múltiplos de cuatro bits, lo que
hace al número hexadecimal muy adecuado, ya que cada dı́gito hexadecimal se
representa mediante un número binario de 4 bits, como se puede ver en la Tabla
2.
Figura 4: Tabla 2
4
Para convertir a binario un número octal basta con reemplazar cada dı́gito
octal con los tres bits apropiados como lo muestra la (Fig.5).
6. Material.
Nombre Imagen
Tarjeta de desarrollo
CY8CKIT-059 PSoc
5LP
R de CYPRESS
.
R
Computadora.
Arduino 1.8.8..
7. PROGRAMAS.
• A continuación se muestra el programa realizado de conversión entre núme-
ro binario a número decimal apoyado por el software PSoC Creator 4.2 y el
Arduino 1.8.8.
• Las anotaciones se encuentran adjuntas dentro de la programación.
5
∗ C o p y r i g h t YOUR COMPANY, THE YEAR
∗ A l l Rights Reserved
∗ UNPUBLISHED, LICENSED SOFTWARE.
∗
∗ CONFIDENTIAL AND PROPRIETARY INFORMATION
∗ WHICH IS THE PROPERTY OF your company .
∗
∗ ========================================
∗/
#include ” p r o j e c t . h”
#include ” s t d i o . h”
#include ”math . h”
#include ” s t d l i b . h”
UART Start ( ) ; // i n i c i a r p u e r t o s e r i e
/∗ P l a c e your i n i t i a l i z a t i o n / s t a r t u p code h e r e ( e . g .
M y I n s t S t a r t ( ) ) ∗/
for ( ; ; )
{
NumBits=s i z e o f ( v a l B i n ) −2; // Nota : e n t r e g a numero de b i t s (
caracteres )
suma=0;
f o r ( i =0; i <=NumBits ; i ++)// Nota : i e s e l p e s o de l a
conversion
{
}
s p r i n t f ( t e x t , ” %i ” , suma ) ; // Nota : c o n v i e r t e de e n t e r o a t e x t o
UART PutString ( t e x t ) ;
UART PutChar ( 1 0 ) ; // Enter Bajar r e n g l o n
CyDelay ( 1 0 0 0 ) ;
/∗ P l a c e your a p p l i c a t i o n code h e r e . ∗/
}
}
/∗ [ ] END OF FILE ∗/
6
• Aquı́ se muestra el resultado de la programación de Binario / Decimal, en
el PSoC Creator 4.2, utilizando el Arduino 1.8.8. para mostrar los resultados.
Ver la figura 6 .
= 64 + 32 + 16 + 8 + 4
+2+1
7
7.2. DECIMAL A BINARIO.
• A continuación se muestra el programa realizado de conversión entre núme-
ro binario a número decimal apoyado por el software PSoC Creator 4.2 y el
Arduino 1.8.8.
• Las anotaciones se encuentran adjuntas dentro de la programación.
// Nota : s e d e c l a r a v a r i a b l e s l o c a l e s
int v a l o r ;
int r e s i d u o ;
i n t par ;
int dividendo ;
char r e s i d u o T e x t [ 1 ] ;
i n t NumBin [ 5 0 ] ;
int contador , i ;
i n t main ( void )
{
C y G l o b a l I n t E n a b l e ; /∗ Enable g l o b a l i n t e r r u p t s . ∗/
for ( ; ; )
{
v a l o r =258; // Nota : Valor d e l numero d e c i m a l a c o n v e r t i r
c o n t a d o r =0; // Nota : I n i c i a e l c o n t a d o r
while ( v a l o r >0){ // Nota : c o n v e r s i o n de dec−b i n
d i v i d e n d o=v a l o r / 2 ;
par=d i v i d e n d o ∗ 2 ;
r e s i d u o=v a l o r −par ;
v a l o r=v a l o r / 2 ; // Nota l a v a r i a b l e ” v a l o r ” , toma nuevo
v a l o r numerico .
NumBin [ c o n t a d o r ]= r e s i d u o ; // Se guarda e l v a l o r de
r e s i d u o en NumBin c h a r
c o n t a d o r ++;
8
f o r ( i=c o n t a d o r −1; i >=0; i −−)// Nota : Esto e s para i n v e r t i r l a
p o s i c i o n de l o s d i j i t o s a i m p r i m i r .
{
s p r i n t f ( r e s i d u o T e x t , ” %i ” , NumBin [ i ] ) ; // imprimr
UART PutChar ( r e s i d u o T e x t [ 0 ] ) ;
9
Conversión Decimal - Resultados
Binario.
100000010
15810
// s e d e c l a r a v a r i a b l e s l o c a l e s
int v a l o r ;
int r e s i d u o ;
i n t par ;
int dividendo ;
char r e s i d u o T e x t [ 1 ] ;
int contador , i ;
i n t NumBin [ 1 0 0 ] ;
i n t main ( void )
{
C y G l o b a l I n t E n a b l e ; /∗ Enable g l o b a l i n t e r r u p t s . ∗/
10
UART Start ( ) ; // i n i c i a r p u en t o s e r i e
for ( ; ; )
{
v a l o r =876; // Nota : Valor d e l numero d e c i m a l a c o n v e r t i r
c o n t a d o r =0; // Nota : I n i c i a e l c o n t a d o r
while ( v a l o r >0){ // Nota : c o n v e r s i o n de dec−O c t a l
d i v i d e n d o=v a l o r / 8 ;
par=d i v i d e n d o ∗ 8 ;
r e s i d u o=v a l o r −par ;
v a l o r=v a l o r / 8 ; // Nota l a v a r i a b l e ” v a l o r ” , toma nuevo
v a l o r numerico .
NumBin [ c o n t a d o r ]= r e s i d u o ; // Se guarda e l v a l o r de
r e s i d u o en NumBin
c o n t a d o r ++;
}
f o r ( i=c o n t a d o r −1; i >=0; i −−)// Nota : Esto e s para i n v e r t i r l a
p o s i c i o n de l o s d i j i t o s a i m p r i m i r
{
s p r i n t f ( r e s i d u o T e x t , ” %i ” , NumBin [ i ] ) ; // Nota : imprimr
UART PutChar ( r e s i d u o T e x t [ 0 ] ) ;
11
Figura 8: Resultado de programación de la conversión Decimal / Octal.
87610 15548
/∗ ========================================
∗
∗ C o p y r i g h t YOUR COMPANY, THE YEAR
∗ A l l Rights Reserved
∗ UNPUBLISHED, LICENSED SOFTWARE.
∗
∗ CONFIDENTIAL AND PROPRIETARY INFORMATION
∗ WHICH IS THE PROPERTY OF your company .
∗
∗ ========================================
12
∗/
#include ” p r o j e c t . h”
#include ” s t d i o . h”
#include ”math . h”
#include ” s t d l i b . h”
/∗ P l a c e your i n i t i a l i z a t i o n / s t a r t u p code h e r e ( e . g .
M y I n s t S t a r t ( ) ) ∗/
for ( ; ; )
{
NumBits=s i z e o f ( v a l B i n ) −2; // Nota : e n t r e g a numero de b i t s (
caracteres )
suma=0;
f o r ( i =0; i <=NumBits ; i ++){
}
s p r i n t f ( t e x t , ” %i ” , suma ) ; // Nota : c o n v i e r t e de e n t e r o a t e x t o
UART PutString ( t e x t ) ;
UART PutChar ( 1 0 ) ; // Enter Bajar r e n g l o n
CyDelay ( 1 0 0 0 ) ;
/∗ P l a c e your a p p l i c a t i o n code h e r e . ∗/
}
}
/∗ [ ] END OF FILE ∗/
13
Figura 9: . Resultado de programación de la conversión Octal / Decimal
23748 127610
= (2*83 ) + (3 ∗ 82 ) + (7 ∗
81 ) + (4 ∗ 80 )
=1024 + 192 + 56 + 4
14
Conversión Decimal – Resultados
Binario.
1100
1210
1910
4510
45/2 = 22 1 22/2 = 11 0
11/2 = 5 1 5/2 = 2 1 2/2
=10 =01
100000010
25810
15
Conversión Binario - Resultados
Decimal.
1111111 = 26 + 25 + 24 +
23 + 22 + 21 + 20 = 64 +
32 + 16 + 8 + 4 + 2 + 1 12710
101111011 =28 + 26 + 25 +
24 + 23 + 21 + 20 = 256 +
64 + 32 + 16 + 8 + 2 + 1 37910
11110101 =27 + 26 + 25 +
24 + 22 + 20 = 128 + 64 +
32 + 16 + 4 + 1 24510
16
Conversión Decimal - Resultados
Octal.
36910 5618
7610 1148
76/8 = 9 → 0,5 ∗ 8 =
49/8 = 1 → 0,125 ∗ 8 =
11/8 = 0 → 0,125 ∗ 8 = 1
12510 1758
125/8 = 15 → ,0625 ∗ 8 =
515/8 = 1 → 0,875 ∗ 8 =
71/8 = 0 → 0,125 ∗ 8 = 1
87610 15548
17
Conversión Octal- De- Resultados
cimal.
23748 127610
= (2*83 ) + (3 ∗ 82 ) + (7 ∗
81 ) + (4 ∗ 80 )
=1024 + 192 + 56 + 4
40068 205410
= (4*83 ) + (0 ∗ 82 ) + (0 ∗
81 ) + (6 ∗ 80 )
= 2048 + 6
40068 205410
= (4*83 ) + (0 ∗ 82 ) + (0 ∗
81 ) + (6 ∗ 80 )
= 2048 + 6
52128 269810
= (5*83 ) + (2 ∗ 82 ) + (1 ∗
81 ) + (2 ∗ 80 )
= 2560 + 128 + 8 + 2
18
Conversión Decimal - Resultados
Hexadecimal.
3310 2116
33/16=2 → 0,0625X16 =
12/16 = 0,125X16 = 2
5210 3416
52/16= 3 → 0,25X16 =
43/16 = 0,1875X16 = 3
28410 11C16
284/16=17 → 0,75X16 =
C17/16 = 1 →
0,0625X16 = 11/16 =
0 → 0,025X16 = 1
19910 C716
199/16=12 →
0,4375X16 = 7
12/16=0 → 0,750X16 =
C
19
Conversión Resultados
Hexadecimal-Decimal.
E516 =(E 16) + (5 1) =
(14 16) + (5 1) = 224 +
5 22910
B2F816 = (B 4096) + (2
256) + (F 16) + (8 1)
= (11 4096) + (2 256) + 45,81610
(15 16) + (8 1) = 45.056
+ 512 + 240 + 8
145C = (1x163 ) +
(4x16 ) + (5x161 ) +
2
4AF = (4x162 ) +
(10x16 ) + (15x160 )
1
=
1024 + 160 + 15 119910
20
8. CONCLUSIONES.
La práctica nos enseñó a desarrollar los diferentes tipos de programas a los
que podemos llegar para obtener un resultado de los diferentes tipos de sistemas
de conversiones mencionados anteriormente, viendo como de una manera muy
fácil se pueden convertir demasiados números a su respectivo sistema corres-
pondiente con algunos softwares de los cuales nos apoyamos para la realización
de la misma, como se muestra en la Figura 10 (Fig.8).
El desarrollo de los programas en cierto punto fue la parte más complicada,
ya que se tenı́a que hacer un análisis referente a la conversión de números que
se tenı́a que hacer, ya que algunos programas necesitaban más variables o cierto
tipo de condiciones para poder llegar a la solución del programa y a si desarrollar
la conversión sin ninguna variación y sin ningún problema.
Para una finalización más rápido del programa las sentencias que se habı́an
definido en un programa anterior se definı́an de otra manera para el programa
siguiente, a sı́ se evitó tener problemas con el nuevo programa y errores, y
dentro de las condiciones lo que se hizo al igual que en la mayorı́a de todos
los programas es manejar números pequeños para que no existieran errores tan
grandes.
La enseñanza en la forma matemática, ası́ como en la forma de programación,
nos dan la seguridad del resultado ya que al desarrollarlo primero de forma
matemática y corroborarlo después en la forma de la programación te das cuenta
de que si obtuvimos algún error matemático o de programación, pero eso ya va
depender de cada tipo de análisis que cada quien tenga para la realización del
programa.
21