Logo Studenta

80643-978-84-942962-3-9-INFORMÁTICA-Libro-de-problemas_1Ed

¡Este material tiene más páginas!

Vista previa del material en texto

Centro
Universitario
de la Defensa
INFORMÁTICA
Libro de Problemas
Fernando Pereñíguez García
MaríaTeresa Martínez Inglés
Nina Skorin-Kapov
 
 
 
INFORMÁTICA 
 
 
Libro de Problemas 
 
Primera edición 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Fernando Pereñíguez García 
María Teresa Martínez Inglés 
Nina Skorin-Kapov 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
© Fernando Pereñiguez García, María Teresa Martínez Inglés, Nina Skorin-Kapov 
 
 
 
 
 
 
 
INFORMÁTICA. Libro de problemas. Primera edición. 
 
Primera Edición. Noviembre 2020 
 
Reservados todos los derechos. El contenido de esta obra está protegido por la ley, que establece 
penas de prisión y/o multas, además de las correspondientes indemnizaciones por daños y perjuicios, 
para quienes reprodujeren, plagiaren, distribuyeren o comunicasen públicamente, en todo o en 
parte, una obra literaria, artística o científica, o su transformación, interpretación o ejecución artística 
fijada en cualquier tipo de soporte o comunicada a través de cualquier medio, sin la preceptiva 
autorización 
 
 
Publicado por: Centro Universitario de la Defensa (CUD) de San Javier 
Base Aérea de San Javier 
C/ Coronel López Peña, s/n 
30720 Santiago de la Ribera, Murcia (España). 
 
Impresión: Talleres Gráficos Edelvives 
 
ISBN: 978-84-942962-3-9 
DL: MU 854-2020 
 
IMPRESO EN ESPAÑA / PRINTED IN SPAIN
 
 
 
 
 
 
 
AGRADECIMIENTOS 
 
 
 
 
 
A todos los profesores que han impartido la asignatura de Informática en el Centro 
Universitario de la Defensa de San Javier. Este libro es fruto de vuestro esfuerzo y empeño 
por ofrecer la mejor docencia a nuestros alumnos. Gracias a todos vosotros, en especial, a 
Pedro J. García Laencina, que sin su dedicación, no hubiera sido possible esta recopilación. 
Además, queremos agradecer tanto el apoyo como el material que nos ha brindado Pedro 
Alcover Garau, ya que muchos de los ejercicios están basados en sus ejemplos y ejercicios de 
libros recomendados en la asignatura. 
Y finalmente, pero no menos importante, a nuestros alumnos. Sois lo que nos anima a 
superarnos como docentes año tras año. Este libro es por y para vosotros. 
 
 
 
 
 
 
 
 
PRÓLOGO 
 
 
 
 
 
Como Director del Centro es para mí un placer realizar el prólogo de este libro que tiene en 
sus manos. En él encontrará una recopilación de ejercicios relacionados con los contenidos 
tratados en la asignatura Informática que se imparte en el primer curso del título de Grado 
en Ingeniería en Organización Industrial (GIOI) en el Centro Universitario de la Defensa 
(CUD), ubicado en la Academia General del Aire (AGA). Es una gran satisfacción constatar 
la ilusión con la que el profesorado del Centro afronta el reto de formar con excelencia a 
nuestros alumnos como futuros oficiales del Ejército del Aire. Sin lugar a dudas, con la 
elaboración de esta herramienta docente, los autores de este libro, el Dr. Fernando Pereñíguez 
García, la Dra. María Teresa Martínez Inglés y la Dra. Nina Skorin-Kapov, demuestran su 
compromiso con la excelencia en la enseñanza que desde el CUD se impulsa de manera 
constante. 
Conscientes de la elevada carga de trabajo a la que están sometidos los alumnos durante su 
etapa de formación, el CUD de San Javier impulsó la iniciativa de dotar a sus alumnos de un 
material didáctico de calidad que les permitiera desarrollar con éxito la intensa labor de 
aprendizaje de las diferentes materias contenidas en el Plan de estudios de la Titulación; sin 
olvidar la doble formación que los alumnos reciben de manera simultánea, universitaria y 
militar, y teniendo siempre presente la realidad profesional a la que se enfrentarán nuestros 
futuros egresados. 
Alineado con este objetivo, este libro no es una simple recopilación de problemas, sino que 
pretende ser una herramienta complementaria que sirva de apoyo a la formación que recibe 
el alumno durante la impartición de la asignatura Informática. Con esta finalidad, los autores 
han seleccionado cuidadosamente los ejercicios que mejor permiten al alumno asimilar los 
contenidos teóricos de la asignatura. Además, estos son presentados en orden incremental 
 
de dificultad e incorporan abundantes explicaciones encaminadas a facilitar la compresión 
de la resolución de los mismos. 
La publicación de este libro es una excelente noticia para el CUD de San Javier, ya que es una 
nueva obra que se suma a la ya larga lista de manuales teóricos y prácticos en el ámbito del 
Título de GIOI que han sido publicados por este Centro desde el comienzo de su actividad 
en el curso académico 2010-2011. 
La elaboración de este material docente ha sido posible gracias al esfuerzo y la continua 
dedicación de sus autores por mejorar la calidad con la que desarrollan sus tareas docentes. 
Además, su publicación se produce en un momento donde sus autores, encargados de 
impartir la asignatura para la que va destinado este libro, han acumulado una amplia 
experiencia y conocimiento sobre el contexto tan particular en el que se imparte esta materia. 
No cabe la menor duda que Fernando, María Teresa y Nina han sabido identificar con éxito 
la colección de problemas suficiente y necesaria que permitirán al alumno comprender e 
interiorizar el contenido teórico de la asignatura de manera que pueda ser aplicado con éxito 
en su futuro ejercicio profesional en el seno de las Fuerzas Armadas. 
Finalmente deseo felicitar a los autores por la excelente obra realizada, por la gran 
herramienta docente que aporta al Centro, compañeros y alumnos, y en definitiva por el 
brillante legado que ello representa. 
 
 
Nicolás Madrid García 
Director del Centro Universitario de la Defensa - AGA 
 
 
 
 
 
 
 
 
 
 
CONTENIDO 
 
 
 
 
 
 
1 INTRODUCCIÓN ................................................................................................................. 13 
2 REPRESENTACIÓN DE LA INFORMACIÓN................................................................... 19 
2.1. Cambios de base: Conversión de cualquier base a base decimal ............................... 21 
2.2. Cambios de base: Conversión de base decimal a cualquier base............................... 23 
2.3. Cambios de base: Conversión general entre bases ...................................................... 27 
2.4. Cambios de base: Conversión entre bases binaria, octal y hexadecimal ................... 30 
2.5. Sumar y restar en binario .............................................................................................. 36 
2.6. Restar en binario usando el complemento a la base ................................................... 39 
2.7. Codificacion de números en binario con signo ........................................................... 43 
2.8. Codificacion de números en hexadecimal con signo .................................................. 47 
3 PROGRAMACIÓN ESTRUCTURADA Y ALGORITMIA ............................................... 53 
3.1. Suma de pares ................................................................................................................ 55 
3.2. Tabla de multiplicar ....................................................................................................... 56 
3.3. Calcular hora .................................................................................................................. 57 
3.4. Corredor elegido ............................................................................................................ 58 
3.5. Calcular cuadros y cubos .............................................................................................. 59 
3.6. Número primo ............................................................................................................... 60 
3.7. Análisis de secuencia numérica .................................................................................... 62 
 
3.8. Suma de números ..........................................................................................................63 
3.9. Potencia ........................................................................................................................... 64 
3.10. Sucesión de ULAM ..................................................................................................... 65 
4 TIPOS DE DATOS PRIMITIVOS ......................................................................................... 67 
4.1. Operadores de asignación, aritméticos y asignación compuesta .............................. 69 
4.2. Operadores relacionales, lógicos y a nivel de bit ........................................................ 76 
4.3. Operadores de tamaño y cambio de tipo ..................................................................... 93 
5 OPERACIONES DE ENTRADA/SALIDA .......................................................................... 99 
5.1. Promoción ..................................................................................................................... 101 
5.2. Media ............................................................................................................................ 102 
5.3. Incrementos .................................................................................................................. 103 
5.4. Leer caracteres .............................................................................................................. 104 
6 ESTRUCTURAS DE CONTROL: SELECCIÓN ................................................................ 107 
6.1. Par-impar ...................................................................................................................... 109 
6.2. Divisor ........................................................................................................................... 110 
6.3. Calificación examen ..................................................................................................... 111 
6.4. Calificación literal ........................................................................................................ 113 
6.5. Ecuación de segundo grado ........................................................................................ 116 
6.6. Número entero en texto ............................................................................................... 119 
6.7. Bilingue ......................................................................................................................... 121 
7 ESTRUCTURAS DE CONTROL: REPETICIÓN ............................................................... 125 
7.1. Números pares ............................................................................................................. 127 
7.2. Factorial ........................................................................................................................ 128 
7.3. Máximo y media versión while .................................................................................. 129 
7.4. Factorial consecutivo ................................................................................................... 132 
7.5. Convocatorias ............................................................................................................... 134 
7.6. Maximo y media versión for ....................................................................................... 136 
7.7. Primo o compuesto ...................................................................................................... 138 
7.8. Aproximación Pi/4 ....................................................................................................... 141 
7.9. Aproximación Pi/2 ....................................................................................................... 143 
8 FUNCIONES........................................................................................................................ 147 
8.1. Potencia ......................................................................................................................... 149 
8.2. Factorial ........................................................................................................................ 152 
 
 
8.3. Factorial global ............................................................................................................. 155 
8.4. Resolver ecuación......................................................................................................... 156 
8.5. Es primo ........................................................................................................................ 158 
8.6. Perfecto ......................................................................................................................... 164 
9 ARRAYS NUMÉRICOS ...................................................................................................... 169 
9.1. Operaciones vectores ................................................................................................... 171 
9.2. Vector Ordenado .......................................................................................................... 175 
9.3. Negativos positivos ..................................................................................................... 178 
9.4. Factoriales ..................................................................................................................... 181 
9.5. Introducir polinomio ................................................................................................... 183 
9.6. Evaluar polinomio ....................................................................................................... 186 
9.7. Derivar polinomio ........................................................................................................ 188 
9.8. Suma matrices .............................................................................................................. 191 
9.9. Identidad triangular .................................................................................................... 194 
9.10. Matriz 01.................................................................................................................... 198 
9.11. Suma elementos matriz ............................................................................................ 199 
9.12. Suma positivos pares ............................................................................................... 202 
10 CARACTERES Y CADENAS DE CARACTERES ............................................................ 205 
10.1. Tipos de caracteres ................................................................................................... 207 
10.2. Número a carácter .................................................................................................... 210 
10.3. Leer cadenas.............................................................................................................. 212 
>> Uso de la función scanf() ............................................................................................... 212 
>> Uso de la función gets() ................................................................................................. 216 
>> Uso de la función fgets() ............................................................................................... 218 
10.4. Longitud cadena ....................................................................................................... 221 
10.5. Contar Aa .................................................................................................................. 224 
10.6. Nombre apellido ....................................................................................................... 226 
10.7. Caracteres iguales ..................................................................................................... 230 
10.8. Encuentra y suma digitos ........................................................................................ 232 
10.9. Cadenainvertida ...................................................................................................... 234 
11 REGISTROS ......................................................................................................................... 237 
11.1. Persona fecha ............................................................................................................ 239 
11.2. Fracciones .................................................................................................................. 242 
 
11.3. Números complejos .................................................................................................. 247 
11.4. Polígono .................................................................................................................... 250 
11.5. Pacientes hospital ..................................................................................................... 257 
 
 
 
 
 
 
 
 
 
 
 
1 
INTRODUCCIÓN 
 
 
Capítulo 1. Introducción | 15 
 
 
Este libro sirve como apoyo a la formación teórica que reciben los caballeros y damas cadetes 
durante en la asignatura Informática del 1º curso del Grado en Ingeniería de Organización 
Industrial (GIOI) por la Universidad Politécnica de Cartagena, impartido en el Centro 
Universitario de la Defensa en San Javier. El núcleo formativo de la asignatura reside en la 
introducción al desarrollo de software donde los alumnos aprenden los fundamentos 
teóricos y prácticos de la programación y adquieren las habilidades necesarias para 
aplicarlos. Para ello, los alumnos aprenderán no sólo cómo se representa y codifica la 
información en un ordenador, sino también entenderán cómo se manipulan y procesan los 
datos codificados mediante secuencias de instrucciones formando programas. En esta 
asignatura, los alumnos serán capaces de realizar programas básicos utilizando el lenguaje 
de programación C. Este libro proporciona una colección de problemas y ejercicios 
comentados para clarificar y apoyar los ejemplos vistos en clase. 
Los contenidos que encontrará el lector en los siguientes capítulos se organizan de la 
siguiente forma. 
En el Capítulo 2 se proporciona una serie de ejercicios relacionados con la representación de 
la información en un ordenador. Toda información esta almacenada dentro del ordenador en 
formato binario con precisión y tamaño finito. Es importante entender cómo se codifica y 
guarda la información para poder saber cómo procesarla, las limitaciones asociadas y los 
errores que puedan surgir. Para entenderlo, en este capítulo se ofrecen ejercicios de cambios 
de base numérica, con particular atención a conversiones entre base decimal y las bases de 
potencias a 2 (binario, octal, hexadecimal). Además, se proporcionan ejercicios de sumar y 
restar números en binario, codificar números con signo en binario y hexadecimal con tamaño 
finito, y hacer operaciones entre números codificados con signo aplicando el complemento a 
la base. 
El Capítulo 3 engloba una colección de problemas sencillos que requieren el desarrollo de un 
algoritmo para su resolución representada de una forma gráfica. Los algoritmos definen una 
serie finita y precisa de instrucciones para procesar los datos y llevar a cabo una tarea. Estos 
algoritmos se pueden representar de forma gráfica mediante un Diagrama de Flujo, o 
flujograma. Este capítulo presenta varios ejemplos de flujogramas que realizan distintas 
tareas. A la hora de diseñar los algoritmos, es recomendable que sean estructurados. Para 
que un algoritmo o programa sea estructurado, debe ajustarse a una colección reducida de 
estructuras básicas de secuencia, de decisión y/o de iteración. La programación estructurada 
permite la sustitución de cualquier bloque de instrucción por una nueva estructura básica. 
En el Capítulo 4 se muestran varios ejercicios sobre los operadores y tipos de datos primitivos 
en el lenguaje de programación C. Es importante a la hora de programar, conocer el tamaño 
y entender la codificación de los datos primitivos y la manera en que los operadores 
manipulan esos datos para evitar errores de precisión, desbordamiento, conversión entre 
tipos, etc. Además, en este capítulo se familiariza los alumnos con la sintaxis básica de C para 
codificar y manipular datos. Primero se describen los operadores de asignación, aritméticos 
y de la asignación compuesta para realizar operaciones básicas de aritmética que 
 16 | Informática. Libro de problemas 
normalmente forman estructuras de secuencias. A continuación, se muestran los operadores 
relacionales y lógicos que son imprescindibles para poder crear estructuras de decisión (los 
condicionales) y de iteración (repetición). Se proporcionan también ejemplos de operadores 
relacionados con el tamaño de las variables y de cambios de tipo. 
A partir de este capítulo, se presentan los ejercicios relacionados con la resolución de 
problemas de programación en el lenguaje C. Para cada problema, se proporcionan ejemplos 
de ejecución1 y las posibles soluciones en forma de código fuente. Además, se añaden 
comentarios para explicar las soluciones que se han propuesto. 
En el Capítulo 5 se familiariza al alumno con las operaciones básicas de entrada/salida de 
datos. Se proporciona una serie de problemas que deben ser resueltos mediante programas 
sencillos. Este capítulo ayuda a familiarizarse con la estructura básica de los programas (la 
función principal, uso de librerías, uso de comentarios) y el uso correcto de las funciones 
prinft() y scanf() de la librería stdio.h que ofrecen mecanismos para facilitar la 
salida/entrada de datos por línea de comandos. 
En el Capítulo 6 se presentan diversos problemas que pretenden afianzar el uso de las 
estructuras de decisión o selección. Las estructuras de control de selección, o condicionales, 
usadas en lenguaje C son: if, if-else, y switch. Estas estructuras de selección 
condicionales varían el flujo de ejecución de un programa dependiendo de una condición. La 
sentencia if permite a un programa elegir entre dos alternativas, comprobando el valor de 
una expresión lógica. Una sentencia if puede ir acompañada opcionalmente por una 
clausula else. Cuando usamos el anidamiento de sentencias if para evaluar, de manera 
consecutiva, condiciones que son mutuamente excluyentes, se puede emplear la 
concatenación if - else. Para comparar una expresión con un conjunto de valores, se podría 
usar sentencias if anidadas, o emplear la sentencia switch que compara sucesivamente el 
valor de una expresión con una lista de constantes de tipo entero o carácter. 
En el Capítulo 7, se proporcionan varios problemas para ilustrar el uso de las estructuras 
básicas de iteración, o repetición. Las estructuras de repetición permiten iterar sobre un 
conjunto de instrucciones, es decir un bucle, mientras se cumpla una condición. Las 
estructuras de repetición usadas en lenguaje C y presentadas en este capítulo son: while, do-
while, y for. La sentencia while es la más sencilla que ofrece C para ejecutar de manera 
repetida un conjunto de instrucciones. Las sentencias dentro del bucle while se ejecutarán 
mientras que la condición definida por una expresión lógica sea verdadera. La estructura do-
while es parecida a la del while, salvo que la condición se evalúa por primera vez después 
de ejecutar todas las sentencias. Eso asegura que las sentencias que forman el do-while se 
 
 
 
 
1 A la hora de mostrar los ejemplos de ejecución, la información introducida por el usuario mediante teclado 
se ha destacado por medio de un sombreado de texto de color gris. 
Capítulo 1. Introducción | 17 
 
 
ejecutarán siempre, al menos, una vez. El bucle for permite escribir de una forma compacta 
la inicialización de una o más variables que van a formar parte del bucle, la condición 
(expresión lógica) que determinará cuando finaliza el bucle y el cambio de las variables en 
cada iteración del bucle. En este capítulo también se introducenejemplos de salida de los 
bucles mediante la instrucción break. 
El Capítulo 8 contiene problemas para afianzar los conceptos relacionados con el uso de 
funciones. Las funciones representan fragmentos de código que realizan tareas determinadas 
y nos permiten dividir la solución de un problema complejo en pequeños problemas más 
sencillos de forma modular. También nos permite realizar la misma tarea varias veces dentro 
del programa sin repetir del código. Los ejemplos proporcionados ayudan a entender el uso 
de funciones centrándose en los conceptos clave en el uso de funciones en C: la declaración, 
definición e invocación de una función. La declaración especifica los parámetros de entrada 
y salida de la función, la invocación define como se usa la función, y la definición incluye las 
instrucciones que ejecuta la función para realizar la tarea. 
En el Capítulo 9, se presentan varios problemas para familiarizarse con el manejo de arrays 
numéricos, que son un tipo básico de datos agregado que permiten almacenar colecciones de 
datos del mismo tipo. Un array es una colección de variables del mismo tipo que se 
referencian mediante un único identificador. Las variables se guardan de forma consecutiva 
en memoria y a las posiciones del array (cada variable) se puede acceder indexando mediante 
un índice. En este capítulo, se presenta el uso de arrays numéricos unidimensionales 
(vectores) y bidimensionales (matrices) y como recorrerlos mediante estructuras de 
repetición e índices. 
El Capítulo 10, para complementar la formación en el uso de arrays, versa sobre la 
manipulación de arrays que almacenan caracteres, también conocidos como cadenas de 
caracteres. Se proporcionan ejemplos donde se usan funciones de la biblioteca ctype.h para 
manipular caracteres. Además, se muestran las diferentes formas de leer cadenas de texto 
aplicando funciones como scanf(), gets(), fgets(). Por último, se presentan problemas 
para recorrer cadenas de caracteres con el fin de copiar, manipular o evaluarlas, en algunos 
casos aplicando funciones de la biblioteca string.h. 
En el Capítulo 11, se completa el uso de los tipos de datos estructurados aprendiendo el uso 
de los registros, también conocidos como estructuras. Un registro es un tipo de dato que 
almacena bajo un mismo nombre información relacionada pero representada con tipos de 
datos heterogéneos. A diferencia de los arrays, en los registros los elementos no tienen que 
ser del mismo tipo y se accede a cualquier elemento del registro a través del nombre. Se 
proporcionan varios ejemplos de cómo declarar registros como nuevos tipos de datos, 
inicializar variables de los tipos nuevos definidos mediante registros y acceder a los campos 
dentro de los variables tipo registro. 
 
 
 
 
 
 
 
2 
REPRESENTACIÓN DE LA 
INFORMACIÓN 
Capítulo 2. Representación de la información | 21 
 
 
2.1. Cambios de base: Conversión de cualquier base a base decimal 
 
Esta sección contiene diversos ejercicios que consisten en cambiar un número n1 expresado 
en base b1 a su correspondiente número n2 expresado en base b2=10. 
 
 
n1=11011, b1=2, b2=10, n2=? 
(11011)2(___)10 
Solución: n2 = 27 
Procedimiento: 
Se recomienda aplicar el método de expansión. 
 
(11011)2  1·24 + 1·23 + 0·22 + 1·21 + 1·20 = 16+8+0+2+1 = (27)10 
 
 
 
 
 
n1=534, b1=6, b2=10, n2=? 
 (534)6(___)10 
Solución: n2 = 202 
Procedimiento: 
Se recomienda aplicar el método de expansión. 
(534)6  5·62 + 3·61 + 4·60 = 180 + 18 + 4 = (202)10 
 
 
 
n1=A3F, b1=16, b2=10, n2=? 
(A3F)16(___)10 
Solución: n2 = 2623 
Procedimiento: 
Se recomienda aplicar el método de expansión. 
(A3F)16  10·162 + 3·161 + 15·60 = 2560 + 48 + 15 = (2623)10 
Posición 24 Posición 20 
 22 | Informática. Libro de problemas 
 
 
n1=778, b1=9, b2=10, n2=? 
(778)9(___)10 
Solución: n2 = 638 
 
 
 
n1=11101110, b1=2, b2=10, n2=? 
(11101110)2(___)10 
Solución: n2 = 238 
 
 
 
n1=A44, b1=16, b2=10, n2=? 
 (A44)16(___)10 
Solución: n2 = 2628 
 
 
 
n1=452, b1=6, b2=10, n2=? 
 (452)6(___)10 
Solución: n2 = 176 
 
 
 
n1=1101, b1=3, b2=10, n2=? 
(1101)3(___)10 
Solución: n2 = 37 
 
 
n1=770, b1=8, b2=10, n2=? 
(770)8(___)10 
Solución: n2 = 504 
 
 
Capítulo 2. Representación de la información | 23 
 
 
 
n1=23F, b1=16, b2=10, n2=? 
 (23F)16(___)10 
Solución: n2 = 575 
2.2. Cambios de base: Conversión de base decimal a cualquier base 
 
Este apartado contiene diversos ejercicios que consisten en cambiar un número n1 expresado 
en base b1=10 a su correspondiente número n2 expresado en base b2. 
 
 
 
n1=254, b1=10, b2=4, n2=? 
(254)10(___)4 
Solución: n2 = 3332 
Procedimiento: 
Se recomienda aplicar el método de divisiones sucesivas. Se debe comenzar dividiendo el 
número n1 entre b2. Guardamos el resto que obtenemos mientras que el cociente se vuelve 
a dividir entre b2. Este proceso se repite de forma sucesiva hasta que se obtenga un cociente 
menor que b2. Los dígitos que forman el número n2 expresado en base b2 es el cociente 
obtenido en la última división, seguido por los restos obtenidos en las sucesivas divisiones 
(desde el ultimo al primero). 
 
 
 
 
 
 
 
 
Aplicando el procedimiento descrito anteriormente, se concluye el número 254 expresado 
en base 10 equivale al número 3332 expresado en base 4: 
 (254)10(3332)4 
254 4 
2 63 4 
 3 15 4 
 3 3 
 
 
Dividendo (n1) 
Resto 
Divisor (base b2) 
Cociente 
 24 | Informática. Libro de problemas 
 
n1=133, b1=10, b2=2, n2=? 
(133)10(___)2 
Solución: n2 = 10000101 
Procedimiento: 
Se recomienda aplicar el método de divisiones sucesivas. 
 
 
 
 
 
 
 
 
 
 
 
Aplicando el procedimiento descrito anteriormente, se concluye el número 133 expresado 
en base 10 equivale al número 10000101 expresado en base 2: 
(133)10(10000101)2 
 
133 2 
1 66 2 
 0 33 2 
 1 16 2 
 0 8 2 
 0 4 2 
 0 2 2 
 0 1 
 
 
 
n1=3390, b1=10, b2=16, n2=? 
(3390)10(___)16 
Solución: n2 = C3D 
Procedimiento: 
Se recomienda aplicar el método de divisiones sucesivas. 
 
 
 
 
Capítulo 2. Representación de la información | 25 
 
 
 
 
 
 
 
 
 
 (3390)10(D3E)16 
 
3390 16 
14 211 16 
 3 13 
 
 
 
 
 
n1=56, b1=10, b2=7, n2=? 
 (56)10(___)7 
Solución: n2 = 110 
 
 
 
n1=323, b1=10, b2=9, n2=? 
 (323)10(___)9 
Solución: n2 = 388 
 
 
 
n1=9, b1=10, b2=16, n2=? 
 (9)10(___)16 
Solución: n2 = 9 
 
 
 
n1=9, b1=10, b2=5, n2=? 
 (9)10(___)5 
Solución: n2 = 14 
E en base 16 
Divisor (base b2) 
D en base 16 
 26 | Informática. Libro de problemas 
 
 
n1=54, b1=6, b2=8, n2=? 
 (54)10(___)8 
Solución: n2 = 66 
 
 
 
n1=22, b1=10, b2=2, n2=? 
(22)10(___)2 
Solución: n2 = 10110 
 
 
 
n1=167, b1=10, b2=16, n2=? 
 (167)10(___)16 
Solución: n2 = A7 
 
 
 
n1=43, b1=10, b2=5, n2=? 
 (43)10(___)5 
Solución: n2 = 133 
 
 
 
 
 
 
 
 
 
 
 
Capítulo 2. Representación de la información | 27 
 
 
2.3. Cambios de base: Conversión general entre bases 
 
Este apartado contiene diversos ejercicios que consisten en cambiar un número n1 expresado 
en base b1 a su correspondiente número n2 expresado en base b2: (n1)b1(n2)b2 
 
 
n1=124, b1=6, b2=8, n2=? 
 (124)6(___)8 
Solución: n2 = 64 
Procedimiento: 
En primer lugar, se recomienda convertir el número n1 expresado en base b1 a base 10 
mediante el método de expansión (Paso 1). Seguidamente deberemos convertir el valor 
obtenido (en base 10) a base b2, empleando para ello el método de divisiones sucesivas 
(Paso 2). 
• Paso 1: 
(124)6(___)10 
Resuelto mediante el método de expansión: 
(124)6  1·62+2·61+4·60 = 36+12+4 = (52)10 
 
• Paso 2: 
(52)10(___)8 
Resuelto mediante el método de divisiones sucesivas: 
 
52 8 
4 6 
 
 
Aplicando el procedimiento descrito anteriormente, se concluye el número 124 expresado 
en base 6 equivale alnúmero 64 expresado en base 8: 
(52)10(64)8 
 
 
Dividendo 
 
Resto 
Divisor (base b2) 
Cociente 
64 
 28 | Informática. Libro de problemas 
 
 
n1=251, b1=8, b2=3, n2=? 
(251)8(___)3 
Solución: n2 = 20021 
Procedimiento: 
En primer lugar, debemos transformar el número n1 expresado en base b1 a base 10 
mediante el método de expansión (Paso 1). A continuación, convertiremos el valor 
obtenido (en base 10) a base b2, empleando el método de divisiones sucesivas (Paso 2). 
• Paso 1: 
(251)8(___)10 
Resuelto mediante el método de expansión: 
(251)8  2·82+5·81+1·80 = 128+40+1 = (169)10 
 
• Paso 2: 
(169)10(___)3 
Resuelto mediante el método de divisiones sucesivas: 
 
 
 
 
 
 
 
 
Por lo tanto, aplicando el procedimiento descrito anteriormente, se concluye el 
número 251 expresado en base 8 equivale al número 20021 expresado en base 3: 
(169)10(20021)3 
169 3 
1 56 3 
 2 18 3 
 0 6 3 
 0 2 
 
 
 
 
 
 
Capítulo 2. Representación de la información | 29 
 
 
 
n1=87, b1=9, b2=5, n2 =? 
 (87)9(___)5 
Solución: n2 = 304 
 
 
 
n1=241, b1=5, b2=9, n2=? 
 (241)5(___)9 
Solución: n2 = 78 
 
 
 
n1=122, b1=3, b2=5, n2=? 
 (122)3(___)5 
Solución: n2 = 32 
 
 
 
n1=130, b1=5, b2=6, n2=? 
 (130)5(___)6 
Solución: n2 = 104 
 
 
 
n1=56, b1=8, b2=7, n2=? 
(56)8(___)7 
Solución: n2 = 64 
 
 
 
n1=AA, b1=16, b2=5, n2=? 
 (AA)16(___)5 
Solución: n2 = 1140 
 30 | Informática. Libro de problemas 
 
n1=1234, b1=5, b2=9, n2=? 
 (1234)5(___)9 
Solución: n2 = 235 
 
 
 
n1=43, b1=6, b2=5, n2=? 
(43)6(___)5 
Solución: n2 = 102 
 
 
2.4. Cambios de base: Conversión entre bases binaria, octal y 
hexadecimal 
 
Este apartado agrupa diversos ejercicios que proponen realizar la conversión de valores 
numéricos expresados en base binaria, octal y hexadecimal. 
 
 
 
Dado el número n1 expresado en binario (con 8 bits), determina sus correspondientes 
valores numéricos n2 en base octal (con 3 dígitos) y n3 en base hexadecimal (con 2 dígitos). 
n1= 0100 1110, n2=?, n3=? 
 (0100 1110)2(___)8 y (0100 1110)2(___)16 
Solución: n2 = 116, n3 = 4E 
Procedimiento: 
Se podría aplicar el procedimiento general (descrito en el apartado 2.3) y transformar el 
número binario a base 10 y, seguidamente, transformar este a sus valores numéricos 
equivalentes en las bases octal y hexadecimal. Sin embargo, para las transformaciones 
entre las bases 2, 8, y 16, se puede aplicar un procedimiento más rápido, que mostramos a 
continuación. 
 
 
Capítulo 2. Representación de la información | 31 
 
 
Binario  Octal 
Se debe dividir el número dado en binario en grupos de 3 bits, empezando por la derecha. 
Cada grupo corresponde a un digito en octal que se calcula aplicando el método de 
expansión. 
 
(0 1 0 0 1 1 1 0) 2  0 1 0 0 1 1 1 0 
 
 
 
 
 
 
 
Según observamos en la anterior figura, el valor 0100 1110 expresado en binario equivale 
al valor 116 expresado en base octal: 
(0100 1110)2(116)8 
 
Binario  Hexadecimal 
Se debe dividir el número dado en binario en grupos de 4 bits, empezando por la derecha. 
Cada grupo corresponde a un digito en hexadecimal que se calcula aplicando el método 
de expansión. 
(0 1 0 0 1 1 1 0) 2  0 1 0 0 1 1 1 0 
 
 
 
 
 
Según se muestra en la figura anterior, el valor 0100 1110 expresado en binario equivale al 
valor 4E expresado en base hexadecimal: 
(0100 1110)2(4E)16 
 
 
 
Dado el número n1 expresado en octal (con 2 dígitos), determina sus correspondientes 
valores numéricos n2 en binario (con 8 bits) y n3 en hexadecimal (con 2 dígitos). 
n1= 53, n2=?, n3=? 
(53)8(___)2 y (53)8(___)16 
1·22+1·21+0·20=6 
0·22+0·21+1·20=1 
0·21+1·20=1 
1·23+1·22+1·21+0·20=(14)10=(E)16 0·2
3+1·22+0·21+0·20=(4)10=(4)16 
 32 | Informática. Libro de problemas 
Solución: n2 = 00101011, n3 = 2B 
Procedimiento: 
Se recomienda transformar el valor octal a binario y, a su vez, convertir este en su 
correspondiente valor hexadecimal. 
 
Octal  Binario 
Debemos convertir cada digito octal (de formal individual) a un valor binario con 3 bits. 
Como un único digito en octal es igual que en decimal, se puede usar el método de 
divisiones sucesivas. Es importante mencionar que, si el número en binario tiene menos de 
3 bits, deberemos rellenar con ceros las posiciones de la izquierda. 
 (53)8  5 3 
 
 
 
 
 
 
Tal y como se muestra en la figura anterior, el valor 53 expresado en base octal equivale al 
valor 101011 expresado en base binaria: 
(53)8 (101 011)2 
Debido a que el ejercicio nos solicita el número en binario empleando 8 bits, rellenamos 
con 0´s las posiciones de la izquierda hasta llegar a 8 bits, resultando lo siguiente: 
(53)8 (00101011)2 
Binario  Hexadecimal 
Se debe dividir el número dado en binario en grupos de 4 bits, empezando por la derecha. 
Cada grupo corresponde a un digito en hexadecimal que se calcula aplicando el método 
de expansión. 
 (101011) 2  1 0 1 0 1 1 
 
 
 
 
Según se muestra en la figura anterior, el valor 101011 expresado en binario equivale al 
valor 2B expresado en base hexadecimal: 
(101011)2(2B)16 
5 2 
1 2 2 
 0 1 
 
3 2 
1 1 
1·23+0·22+1·21+1·20=(11)10=(B)16 0·23+0·22+1·21+0·20=(2)10=(2)16 
Capítulo 2. Representación de la información | 33 
 
 
 
Dado el número n1 expresado en hexadecimal (con 2 dígitos), determina sus 
correspondientes valores numéricos n2 en binario (con 8 bits) y n3 en octal (con 3 dígitos). 
n1= 65, n2=?, n3=? 
 (65)16(___)2 y (65)16(___)8 
Solución: n2 = 0110 0101, n3 = 145 
Procedimiento: 
Se recomienda transformar el valor hexadecimal a binario y, a su vez, convertir este en su 
correspondiente valor octal. 
 
Hexadecimal Binario 
Debemos convertir cada digito hexadecimal (de forma individual) a un valor binario con 
4 bits. Si el número resultante en binario tiene menos que 4 bits, rellenamos conceros las 
posiciones de la izquierda. 
 
 (65)16  6 5 
 
 
 
 
 
 
 
 (0110 0101)2 
 
Tal y como se muestra en la figura anterior, el valor 65 expresado en base hexadecimal 
equivale al valor 0110 0101 expresado en base binaria: 
(65)16(0110 0101)2 
 
Binario  Octal 
Se debe dividir el número dado en binario en grupos de 3 bits, empezando por la derecha. 
Cada grupo corresponde a un digito en octal que se calcula aplicando el método de 
expansión. 
5 2 
1 2 2 
 0 1 
 
6 2 
0 3 2 
 1 1 
 
 34 | Informática. Libro de problemas 
 
 
 (0 1 1 0 0 1 0 1) 2  0 1 1 0 0 1 0 1 
 
 
 
 
 
 
Según observamos en la anterior figura, el valor 0110 0101 expresado en binario equivale 
al valor 145 expresado en base octal: 
(0110 0101)2(145)8 
 
 
 
Dado el número n1 expresado en binario (con 8 bits), determina sus correspondientes 
valores numéricos n2 en base octal (con 3 dígitos) y n3 en base hexadecimal (con 2 dígitos). 
n1= 1100 0110, n2=?, n3=? 
 (1100 0110)2(___)8 y (1100 0110)2(___)16 
Solución: n2 = 306, n3 = C6 
 
 
 
Dado el número n1 expresado en binario (con 8 bits), determina sus correspondientes 
valores numéricos n2 en base octal (con 3 dígitos) y n3 en base hexadecimal (con 2 dígitos). 
n1= 1110 0111, n2=?, n3=? 
 (1110 0111)2(___)8 y (1110 0111)2(___)16 
Solución: n2 = 347, n3 = E7 
 
 
 
Dado el número n1 expresado en octal (con 3 dígitos), determina sus correspondientes 
valores numéricos n2 en binario (con 10 bits) y n3 en hexadecimal (con 3 dígitos). 
n1= 761, n2=?, n3=? 
 (761)8(___)2 y (761)8(___)16 
Solución: n2 = 0111110001, n3 = 1F1 
1·22+0·21+1·20=5 
1·22+0·21+0·20=4 
0·21+1·20=1 
Capítulo 2. Representación de la información | 35 
 
 
 
Dado el número n1 expresado en octal (con 3 dígitos), determina sus correspondientes 
valores numéricos n2 en binario (con 8 bits) y n3 en hexadecimal (con 2 dígitos). 
n1= 275, n2=?, n3=? 
 (275)8(___)2y (275)8(___)16 
Solución: n2 = 10111101, n3 = BD 
 
 
 
Dado el número n1 expresado en hexadecimal (con 2 dígitos), determina sus 
correspondientes valores numéricos n2 en binario (con 8 bits) y n3 en octal (con 3 dígitos). 
n1= AA, n2=?, n3=? 
(AA)16(___)2 y (AA)16(___)8 
Solución: n2 = 10101010, n3 = 252 
 
 
Dado el número n1 expresado en hexadecimal (con 3 dígitos), determina sus 
correspondientes valores numéricos n2 en binario (con 12 bits) y n3 en octal (con 4 dígitos). 
n1= F10, n2=?, n3=? 
 (F10)16(___)2 y (F10)16(___)8 
Solución: n2 = 111100010000, n3 = 7420 
 
 
 
Dado el número n1 expresado en hexadecimal (con 2 dígitos), determina sus 
correspondientes valores numéricos n2 en binario (con 8 bits) y n3 en octal (con 3 dígitos). 
n1= 0E, n2=?, n3=? 
 (0E)16(___)2 y (0E)16(___)8 
Solución: n2 = 00001110, n3 = 016 
 
 
 
 
 36 | Informática. Libro de problemas 
2.5. Sumar y restar en binario 
 
 
Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los 
mismos en base binaria. 
n1= 1101, n2=1011, n1+n2=?, n1-n2=? 
Solución: n1+n2 = 11000, n1-n2 = 10 
Procedimiento: 
 
 +1 +1 +1 
1 1 0 1 
 + 1 0 1 1 
 1 1 0 0 0 
 -1 
1 1 0 1 
 - 1 0 1 1 
 0 0 1 0 
 
 
 
 
Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los 
mismos en base binaria. 
 n1= 1110, n2=1011, n1+n2=?, n1-n2=? 
Solución: n1+n2 = 11001, n1-n2 = 11 
Procedimiento: 
 
 +1 +1 
1 1 1 0 
 + 1 0 1 1 
 1 1 0 0 1 
 
 -1 -1 
1 1 1 0 
 - 1 0 1 1 
 0 0 1 1 
 
 
 
 
 
 
Capítulo 2. Representación de la información | 37 
 
 
 
Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los 
mismos en base binaria. 
n1= 10010, n2=11, n1+n2=?, n1-n2=? 
Solución: n1+n2 = 10101, n1-n2 = 1111 
Procedimiento: 
 
 +1 
 1 0 0 1 0 
 + 1 1 
 1 0 1 0 1 
 
 -1 -1 -1 -1 
 1 0 0 1 0 
 - 1 1 
 0 1 1 1 1 
 
 
 
 
Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los 
mismos en base binaria. 
n1= 1001, n2=111, n1+n2=?, n1-n2=? 
Solución: n1+n2 = 10000, n1-n2 = 10 
 
 
 
Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los 
mismos en base binaria. 
n1= 11, n2=1, n1+n2=?, n1-n2=? 
Solución: n1+n2 = 100, n1-n2 = 10 
 
 
 
Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los 
mismos en base binaria. 
n1= 101, n2=11, n1+n2=?, n1-n2=? 
Solución: n1+n2 = 1000, n1-n2 = 10 
 
 
 38 | Informática. Libro de problemas 
 
Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los 
mismos en base binaria. 
n1= 10011, n2=1011, n1+n2=?, n1-n2=? 
Solución: n1+n2 = 11110, n1-n2 = 1000 
 
 
 
 
Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los 
mismos en base binaria. 
n1= 11011, n2=110, n1+n2=?, n1-n2=? 
Solución: n1+n2 = 100001, n1-n2 = 10101 
 
 
 
 
Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los 
mismos en base binaria. 
 n1= 1011, n2=0110, n1+n2=?, n1-n2=? 
Solución: n1+n2 = 10001, n1-n2 = 101 
 
 
 
 
Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los 
mismos en base binaria. 
n1= 1111, n2=1000, n1+n2=?, n1-n2=? 
Solución: n1+n2 = 10111, n1-n2 = 111 
 
 
 
Dados los valores n1 y n2, ambos expresados en base binaria, calcule la suma y resta de los 
mismos en base binaria. 
n1= 10001, n2=101, n1+n2=?, n1-n2=? 
Solución: n1+n2 = 10110, n1-n2 = 1100 
Capítulo 2. Representación de la información | 39 
 
 
2.6. Restar en binario usando el complemento a la base 
 
 
Dados los valores n1 y n2 (expresados en base binaria con 8 bits), calcule: 
• El complemento a 1 (complemento a la base menos uno) de n2 con 8 bits. 
• El complemento a 2 (complemento a la base) de n2 con 8 bits. 
• La resta n1-n2 considerando 8 bits haciendo uso del procedimiento basado en 
complemento a la base. 
 
n1= 0111 1011, n2=0100 1011, 𝐶𝐶18(𝑛𝑛2) =?, 𝐶𝐶28(𝑛𝑛2) =?, n1-n2=? 
Solución: 𝑪𝑪𝟏𝟏𝟖𝟖(𝒏𝒏𝒏𝒏)= 1011 0100, 𝑪𝑪𝒏𝒏𝟖𝟖(𝒏𝒏𝒏𝒏) =1011 0101, n1-n2 = 0011 0000 
Procedimiento: 
 
El complemento a 1 de un número binario se obtiene fácilmente sustituyendo todos los 
ceros por unos y viceversa: 
n2=0100 1011  𝐶𝐶18(𝑛𝑛2)=1011 0100 
El complemento a 2 de un número binario se obtiene al sumarle la unidad al complemento 
a 1 de dicho número: 
 𝐶𝐶18(𝑛𝑛2)= 1011 0100 
 + 1 
𝐶𝐶28(𝑛𝑛2)= 1011 0101 
La resta n1-n2 considerando x bits se puede calcular como los x bits menos significativos 
de la suma n1+C2(n2), donde n1 y C2(n2) deben ser valores binarios expresados haciendo 
uso de x bits. En este ejemplo, la resta esta calculada considerando 8 bits, es decir, x = 8: 
 
 0111 1011  n1 
 + 1011 0101  𝐶𝐶28(𝑛𝑛2) 
 10011 0000 
 
 
Atendiendo al procedimiento descrito anteriormente de resta binario en complemento a la 
base, la resta de los valores n1-n2 resulta en el valor 0011 0000. 
 
 
 
 
8 bits Descartar 
 40 | Informática. Libro de problemas 
 
Dados los valores n1 y n2 (expresados en base binaria con 8 bits), calcule: 
• El complemento a 1 (complemento a la base menos uno) de n2 con 10 bits. 
• El complemento a 2 (complemento a la base) de n2 con 10 bits. 
• La resta n1-n2 considerando 10 bits haciendo uso del procedimiento basado en 
complemento a la base. 
 
n1= 0111 1011, n2 = 0100 1011, 𝐶𝐶110(𝑛𝑛2)=?, 𝐶𝐶210(𝑛𝑛2) =?, n1-n2=? 
Solución: 𝑪𝑪𝟏𝟏𝟏𝟏𝟏𝟏(𝒏𝒏𝒏𝒏)= 1011 0100, 𝑪𝑪𝒏𝒏𝟏𝟏𝟏𝟏(𝒏𝒏𝒏𝒏) =1011 0101, n1-n2 = 0011 0000 
Procedimiento: 
 
El complemento a 1 de un número binario se obtiene fácilmente al sustituir todos los ceros 
por unos y viceversa. Como el ejercicio especifica con 10 bits, tenemos que añadir dos ceros 
en las posiciones ás a la izquierda del numero n2: 
 
n2=00 0100 1011 𝐶𝐶110(𝑛𝑛2)=11 1011 0100 
 
El complemento a 2 de un número binario se obtiene al sumarle la unidad al complemento 
a 1 de dicho número. 
 
 𝐶𝐶110(𝑛𝑛2)= 11 1011 0100 
 + 1 
 𝐶𝐶210(𝑛𝑛2)= 111011 0101 
 
La resta n1-n2 considerando x bits se puede calcular como los x bits menos significativos 
de la suma n1+C2(n2), donde n1 y C2(n2) deben ser valores binarios expresados haciendo 
uso de x bits. En este ejemplo, la resta esta calculada considerando 10 bits, es decir, x = 10: 
 
 00 0111 1011  n1 con 10 bits 
 + 11 1011 0101  𝐶𝐶210(𝑛𝑛2) 
 1000011 0000 
 
 
 
Atendiendo al procedimiento descrito anteriormente de resta binario en complemento a la 
base, la resta de los valores n1-n2 resulta en el valor 00 0011 0000. 
 
 
10 bits Descartar 
Capítulo 2. Representación de la información | 41 
 
 
 
Dados los valores n1 y n2 (expresados en base binaria con 8 bits), calcule: 
• El complemento a 1 (complemento a la base menos uno) de n2 con 8 bits. 
• El complemento a 2 (complemento a la base) de n2 con 8 bits. 
• La resta n1-n2 considerando 8 bits haciendo uso del procedimiento basado en 
complemento a la base. 
 
n1= 1101 1100, n2=1000 1110, 𝐶𝐶18(𝑛𝑛2)=?, 𝐶𝐶28(𝑛𝑛2) =?, n1-n2=? 
Solución: 𝑪𝑪𝟏𝟏𝟖𝟖(𝒏𝒏𝒏𝒏)= 0111 0001, 𝑪𝑪𝒏𝒏𝟖𝟖(𝒏𝒏𝒏𝒏) =0111 0010, n1-n2 = 0100 1110 
 
 
 
 
Dados los valores n1 y n2 (expresados en basebinaria con 4 bits), calcule: 
• El complemento a 1 (complemento a la base menos uno) de n2 con 5 bits. 
• El complemento a 2 (complemento a la base) de n2 con 5 bits. 
• La resta n1-n2 considerando 5 bits haciendo uso del procedimiento basado en 
complemento a la base. 
 
n1= 1011, n2=0011, 𝐶𝐶15(𝑛𝑛2)=?, 𝐶𝐶25(𝑛𝑛2) =?, n1-n2=? 
Solución: 𝑪𝑪𝟏𝟏𝟓𝟓(𝒏𝒏𝒏𝒏)= 11100, 𝑪𝑪𝒏𝒏𝟓𝟓(𝒏𝒏𝒏𝒏) =11101, n1-n2 = 01000 
 
 
 
 
Dados los valores n1 y n2 (expresados en base binaria con 8 bits), calcule: 
• El complemento a 1 (complemento a la base menos uno) de n2 con 8 bits. 
• El complemento a 2 (complemento a la base) de n2 con 8 bits. 
• La resta n1-n2 considerando 8 bits haciendo uso del procedimiento basado en 
complemento a la base. 
 
n1= 0100 1101, n2=0001 1110, 𝐶𝐶18(𝑛𝑛2)=?, 𝐶𝐶28(𝑛𝑛2) =?, n1-n2=? 
Solución: 𝑪𝑪𝟏𝟏𝟖𝟖(𝒏𝒏𝒏𝒏)= 1110 0001, 𝑪𝑪𝒏𝒏𝟖𝟖(𝒏𝒏𝒏𝒏) =1110 0010, n1-n2 = 0010 1111 
 
 
 42 | Informática. Libro de problemas 
 
Dados los valores n1 y n2 (expresados en base binaria con 8 bits), calcule: 
• El complemento a 1 (complemento a la base menos uno) de n2 con 8 bits. 
• El complemento a 2 (complemento a la base) de n2 con 8 bits. 
• La resta n1-n2 considerando 8 bits haciendo uso del procedimiento basado en 
complemento a la base. 
 
n1= 1001 0101, n2=1000 1110, 𝐶𝐶18(𝑛𝑛2)=?, 𝐶𝐶28(𝑛𝑛2) =?, n1-n2=? 
Solución: 𝑪𝑪𝟏𝟏𝟖𝟖(𝒏𝒏𝒏𝒏)= 0111 0001, 𝑪𝑪𝒏𝒏𝟖𝟖(𝒏𝒏𝒏𝒏) =0111 0010, n1-n2 = 0000 0111 
 
 
 
 
 
Dados los valores n1 y n2 (expresados en base binaria con 4 bits), calcule: 
• El complemento a 1 (complemento a la base menos uno) de n2 con 4 bits. 
• El complemento a 2 (complemento a la base) de n2 con 4 bits. 
• La resta n1-n2 considerando 8 bits haciendo uso del procedimiento basado en 
complemento a la base. 
 
n1= 1011, n2=1010, 𝐶𝐶14(𝑛𝑛2)=?, 𝐶𝐶24(𝑛𝑛2) =?, n1-n2=? 
Solución: 𝑪𝑪𝟏𝟏𝟒𝟒(𝒏𝒏𝒏𝒏)= 0101, 𝑪𝑪𝒏𝒏𝟒𝟒(𝒏𝒏𝒏𝒏) =0110, n1-n2 = 0001 
 
 
 
 
Dados los valores n1 y n2 expresados en base binaria con 5 y 3 bits, respectivamente, 
calcule: 
• El complemento a 1 (complemento a la base menos uno) de n2 con 8 bits. 
• El complemento a 2 (complemento a la base) de n2 con 8 bits. 
• La resta n1-n2 considerando 8 bits haciendo uso del procedimiento basado en 
complemento a la base. 
 
n1= 1 0101, n2=110, 𝐶𝐶18(𝑛𝑛2)=?, 𝐶𝐶28(𝑛𝑛2)=?, n1-n2=? 
Solución: 𝑪𝑪𝟏𝟏𝟖𝟖(𝒏𝒏𝒏𝒏)=1111 1001, 𝑪𝑪𝒏𝒏𝟖𝟖(𝒏𝒏𝒏𝒏) =1111 1010, n1-n2 = 0000 1111 
 
Capítulo 2. Representación de la información | 43 
 
 
 
Dados los valores n1 y n2 (expresados en base binaria con 8 bits), calcule: 
• El complemento a 1 (complemento a la base menos uno) de n2 con 8 bits. 
• El complemento a 2 (complemento a la base) de n2 con 8 bits. 
• La resta n1-n2 considerando 8 bits haciendo uso del procedimiento basado en 
complemento a la base. 
 
n1= 1111 1111, n2=0000 1110, 𝐶𝐶18(𝑛𝑛2)=?, 𝐶𝐶28(𝑛𝑛2) =?, n1-n2=? 
Solución: 𝑪𝑪𝟏𝟏𝟖𝟖(𝒏𝒏𝒏𝒏)= 1111 0001, 𝑪𝑪𝒏𝒏𝟖𝟖(𝒏𝒏𝒏𝒏) =1111 0010, n1-n2 = 1111 0001 
 
 
 
 
Dados los valores n1 y n2 (expresados en base binaria con 4 bits), calcule: 
• El complemento a 1 (complemento a la base menos uno) de n2 con 4 bits. 
• El complemento a 2 (complemento a la base) de n2 con 4 bits. 
• La resta n1-n2 considerando 4 bits haciendo uso del procedimiento basado en 
complemento a la base. 
 
n1=1111, n2= 0110, 𝐶𝐶14(𝑛𝑛2)=?, 𝐶𝐶24(𝑛𝑛2) =?, n1-n2=? 
Solución: 𝑪𝑪𝟏𝟏𝟒𝟒(𝒏𝒏𝒏𝒏)= 1001, 𝑪𝑪𝒏𝒏𝟒𝟒(𝒏𝒏𝒏𝒏) =1010, n1-n2 = 1001 
 
 
2.7. Codificacion de números en binario con signo 
 
 
Codifique el valor n1, expresado en base decimal, para obtener su correspondiente código 
n2 en formato binario de 8 bits y con posibilidad de signo (usando el complemento a 2). 
n1= -5, n2=? 
Solución: n2 = 1111 1011 
Procedimiento: 
Debido a que el número es negativo, primero se debe convertir el valor absoluto a binario 
con 8 bits. Para ello aplicaremos el método de las divisiones sucevias (Paso 1). 
Seguidamente, procederemos a calcular el complemento a 2 del valor binario obtenido 
(Paso 2). 
 44 | Informática. Libro de problemas 
• Paso 1: 
 (5)10(___)2 
 
 
 
 
 
Tal y como se puede observar, el número 5 expresado en base 10 equivale al número 
0000 0101 expresado en base binaria. Nótese que se han añadido ceros en las 
posiciones más a la izquierda para obtener el valor representado con 8 bits: 
(5)10(0000 0101)2 
• Paso 2: 
Se calcula el complemento a 1 del valor binario obtenido en el paso 1: 
𝐶𝐶18 (0000 0101) = 1111 1010 
A partir de este, procedemos a calcular el complemento a 2: 
𝐶𝐶28 (0000 0101) = 𝐶𝐶18(0000 0101) + 1 = 1111 1010 + 1 = 1111 1011 
 
Por lo tanto, se concluye que n2=1111 1011. 
5 2 
1 2 2 
 0 1 
 
 
 
 
Codifique el valor n1, expresado en base decimal, para obtener su correspondiente código 
n2 en formato binario con 8 bits y con posibilidad de signo (usando el complemento a 2). 
n1 = 20, n2 = ? 
Solución: n2 = 00010100 
Procedimiento: 
Debido a que el número positivo, simplemente deberemos convertir el número a binario 
aplicando el método de divisiones sucesivas. Si fuera necesario, complementamos con 
ceros las posiciones más a la izquierda para obtener una representación en 8 bits, tal y como 
solicita el enunciado del ejercicio. 
 
En definitiva, tras aplicar este procedimiento, se llega a la conclusión que el número 20 
(expresado en base 10) equivale al número 0001 0100 (expresado en base binaria): 
(20)10(0001 0100)2 
Capítulo 2. Representación de la información | 45 
 
 
 
Dado el valor n1, codificado en formato binario con 8 bits y posibilidad de signo (usando 
el complemento a 2), obtenga su valor n2 equivalente en base decimal. 
n1= 1111 1001, n2=? 
Solución: n2 = -7 
Procedimiento: 
Debido a que el valor binario proporcionado comienza por el bit "1", nos encontramos ante 
un número negativo. 
 
1111 1001  El número es negativo 
 
En este caso, se debe proceder de la siguiente manera: primero calculamos el complemento 
a 2 del número en binario (Paso 1) y, seguidamente, convertimos a decimal (Paso 2) el valor 
obtenido. El resultado obtenido será el valor absoluto del resultado que solicita el ejercicio. 
 
• Paso 1: 
Complemento a 1 (𝐶𝐶18): 
𝐶𝐶18 (1111 1001)=0000 0110 
Complemento a 2, (𝐶𝐶28): 
𝐶𝐶28 (1111 1001)= 𝐶𝐶18 (1111 1001)+1=0000 0110+1=0000 0111 
 
• Paso 2: 
(0000 0111)21·22+1·21+1·20 =(7)10, 7 es el valor absoluto 
 
Tal y como se ha explicado anteriormente, el resultado obtenido (7 en base decimal) es el 
valor absoluto del resultado que buscamos. Por lo tanto, se puede afirmar que 1111 1001 
es la representación binaria del valor -7 decimal: 
n2=-7 
 
 
 
Calcule el valor n1 codificado en formato binario con 8 bits y con posibilidad de signo 
(usando el complemento a 2) a su valor n2 equivalente en base decimal. 
n1= 0000 1110, n2=? 
Solución: n2 = 14 
 46 | Informática. Libro de problemas 
Procedimiento: 
Debido a que el número binario comienza con el bit "0", entonces nos encontramos ante un 
número positivo. 
0000 1110  El número es positivo 
 
En este caso, para resolver el ejercicio simplemente se debe convertir el número 
representado en binario a decimal aplicando el método de expansión: 
 
(0000 1110)21·23+1·22+1·21 = (14)10 
 
A la vista del resultado obtenido en la operación anterior, afirmamos que el valor binario 
0000 1110 equivale al valor 14 en base decimal: 
n2 = 14 
 
 
 
Dado el valor n1, representado en base decimal, obtenga su correspondiente código n2 en 
formato binario con 8 bits y posibilidad de signo (usando el complemento a 2). 
n1= -14, n2=? 
Solución: n2 = 1111 0010 
 
 
 
Dado el valor n1, representado en formato binario con 8 bits y posibilidad de signo (usando 
el complemento a 2), determine su valor n2 equivalente en base decimal. 
n1= -32, n2=? 
Solución: n2 = 1110 0000 
 
 
 
Dado el valor n1, representado en base decimal, obtengasu correspondiente código n2 en 
formato binario con 8 bits y posibilidad de signo (usando el complemento a 2). 
n1= -17, n2=? 
Solución: n2 = 1110 1111 
 
 
Capítulo 2. Representación de la información | 47 
 
 
 
Dado el valor n1, representado en formato binario con 8 bits y posibilidad de signo (usando 
el complemento a 2), determine su valor n2 equivalente en base decimal. 
n1= 1111 0111, n2=? 
Solución: n2 = -9 
 
 
 
Dado el valor n1, representado en formato binario con 8 bits y posibilidad de signo (usando 
el complemento a 2), determine su valor n2 equivalente en base decimal. 
n1= 1000 0000, n2=? 
Solución: n2 = -128 
 
 
 
Dado el valor n1, representado en formato binario con 8 bits y posibilidad de signo (usando 
el complemento a 2), determine su valor n2 equivalente en base decimal. 
n1= 0000 0011, n2=? 
Solución: n2 = 3 
 
2.8. Codificacion de números en hexadecimal con signo 
 
 
Dado el valor n1, representado en base decimal, determine el valor n2 equivalente 
representado en base hexadecimal con 4 dígitos y con posibilidad de signo (usando el 
complemento a la base). 
n1= -69, n2=? 
Solución: n2 = FFBB 
Procedimiento: 
Debido a que el valor n1 es un número negativo, para resolver este ejercicio debemos seguir 
dos pasos. En primer lugar, convertimos el valor absoluto de n1 (es decir, el valor 69) a 
hexadecimal con 4 dígitos (Paso 1). A continuación, calculamos el complemento a la base 
(𝐶𝐶164 ) del valor obtenido (Paso 2). Para calcular el complemento a la base en hexadecimal 
bastará con sumar 1 al complemento a la base menos uno (𝐶𝐶154 ). A su vez, para obtener el 
complemento a la base menos uno, deberemos restar a FFFF el valor en cuestión. 
 48 | Informática. Libro de problemas 
 
• Paso 1 
(69)10(___)16 
 
 
 
 
 
Como debemos obtener una representación con 4 dígitos hexadecimales, añadimos 
ceros en las posiciones más a la izquierda. De este modo, obtenemos lo siguiente: 
(69)10(0045)16 
• Paso 2 
En primer lugar, calculamos el complemento a la base menos uno (𝐶𝐶154 ) del valor 
hexadecimal 0045: 
FFFF 
 - 0045 
 𝐶𝐶154 (0045)= FFBA 
 
Ahora procedemos a calcular el complemento a la base (𝐶𝐶164 ): 
𝐶𝐶154 (0045) = FFBA 
 + 1 
 𝐶𝐶164 (0045)= FFBB 
 
Por lo tanto, se concluye que n2 = FFBB. 
69 16 
5 4 
 
 
 
 
 
Dado el valor n1, representado en base decimal, determine el valor n2 equivalente 
representado en base hexadecimal con 5 dígitos y con posibilidad de signo (usando el 
complemento a la base). 
n1= 37, n2=? 
Solución: n2 = 0025 
Procedimiento: 
Debido a que n1 es positivo, para resolver este ejercicio simplemente debemos convertir 
n1 a hexadecimal aplicando el método de divisiones sucesivas. 
 
Capítulo 2. Representación de la información | 49 
 
 
 
 
 
 
 
 
 
Para obtener una representación con 5 dígitos hexadecimales rellenamos con ceros las 
posiciones más a la izquierda. Por lo tanto, concluimos que n2 = 00025. 
37 16 
5 2 
 
 
 
 
 
 
Dado el valor n1, representado en formato hexadecimal con 6 dígitos y con posibilidad de 
signo (usando el complemento a la base), determine el valor n2 equivalente en base 
decimal. 
n1= FFFFF0, n2=? 
Solución: n2 = -16 
Procedimiento: 
Un número expresado en base hexadecimal es negativo cuando comienza por el dígito 8, 
9, A, B, C, D, E o F. En nuestro caso, n1 comienza con el dígito F, por lo que es un número 
negativo. 
FFFFF0  El número es negativo 
 
En esta situación, para resolver el ejercicio debemos seguir dos pasos. En primer lugar, se 
debe calcular el complemento a la base (𝐶𝐶166 ) en hexadecimal, de manera que obtenemos el 
valor absoluto de n1, es decir, su valor equivalente positivo (Paso 1). A continuación, se 
debe convertir a decimal el valor obtenido en el paso anterior. El valor decimal que 
obtenemos será el valor absoluto del resultado que buscamos (n2). 
 
• Paso 1 
En primer lugar calculamos el complemento a la base menos uno (𝐶𝐶156 ) de n1: 
FFFFFF 
 - FFFFF0 
 𝐶𝐶156 (FFFFF0) = 00000F 
 
 
 
 50 | Informática. Libro de problemas 
A partir de 𝐶𝐶156 calculamos fácilmente el complemento a la base (𝐶𝐶166 ): 
 𝐶𝐶156 (FFFFF0) = 00000F 
 + 1 
 𝐶𝐶166 (FFFFF0)= 000010 
• Paso 2 
 
Convertimos de hexadecimal a decimal el valor 𝐶𝐶166 aplicando el método de 
expansión: 
 
(000010)161·161 = (16)10, 16 es el valor absoluto 
 
El valor decimal que hemos obtenido en el paso 2 (16) es el valor absoluto del resultado 
final. Por lo tanto, se concluye que n2=-16. 
 
 
 
Dado el valor n1, representado en formato hexadecimal con 4 dígitos y con posibilidad de 
signo (usando el complemento a la base), determine el valor n2 equivalente en base 
decimal. 
n1= AFF5, n2=? 
Solución: n2 = -20491 
Procedimiento: 
Un número expresado en base hexadecimal es negativo cuando comienza por el dígito 8, 
9, A, B, C, D, E o F. En nuestro caso, n1 comienza con el dígito A, por lo que es un número 
negativo. 
AFF5  El número es negativo 
 
Por lo tanto, para resolver este ejercicio se deben seguir los mismos pasos explicados en el 
anterior (Ejercicio 2.75). 
 
• Paso 1 
Calculamos el complemento a la base menos uno (𝐶𝐶154 ) de n1: 
FFFF 
 - AFF5 
 𝐶𝐶154 (AFF5) = 500A 
 
Capítulo 2. Representación de la información | 51 
 
 
A partir de 𝐶𝐶154 calculamos el complemento a la base (𝐶𝐶164 ) 
 
 𝐶𝐶154 (AFF5) = 500A 
 + 1 
 𝐶𝐶164 (AFF5) = 500B 
• Paso 2 
 
Convertimos de hexadecimal a decimal el valor 𝐶𝐶164 aplicando el método de 
expansión: 
 
(500B)165·163+0·162+1·161+11·160 = (20491)10, 20491 es el valor absoluto 
 
El valor decimal que se ha obtenido en el paso 2 (20491) es el valor absoluto del resultado 
final. Por lo tanto, concluimos que n2=-20491. 
 
 
 
Dado el valor n1, representado en base decimal, determine el valor n2 equivalente 
representado en base hexadecimal con 5 dígitos y con posibilidad de signo (usando el 
complemento a la base). 
n1= -1, n2=? 
Solución: n2 = FFFFF 
 
 
 
Dado el valor n1, representado en base decimal, determine el valor n2 equivalente 
representado en base hexadecimal con 4 dígitos y con posibilidad de signo (usando el 
complemento a la base). 
n1= -33, n2=? 
Solución: n2 = FFDF 
 
 
 
Dado el valor n1, representado en base decimal, determine el valor n2 equivalente 
representado en base hexadecimal con 4 dígitos y con posibilidad de signo (usando el 
complemento a la base). 
n1= -563, n2=? 
Solución: n2 = FDCD 
 52 | Informática. Libro de problemas 
 
 
Dado el valor n1, representado en formato hexadecimal con 4 dígitos y con posibilidad de 
signo (usando el complemento a la base), determine el valor n2 equivalente en base 
decimal. 
n1= 8000, n2=? 
Solución: n2 = -32768 
 
 
 
Dado el valor n1, representado en formato hexadecimal con 5 dígitos y con posibilidad de 
signo (usando el complemento a la base), determine el valor n2 equivalente en base 
decimal. 
n1= 00029, n2=? 
Solución: n2 = 41 
 
 
 
Dado el valor n1, representado en formato hexadecimal con 6 dígitos y con posibilidad de 
signo (usando el complemento a la base), determine el valor n2 equivalente en base 
decimal. 
n1= FFFFE5, n2=? 
Solución:n2 = -27 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3 
PROGRAMACIÓN 
ESTRUCTURADA Y 
ALGORITMIA 
Capítulo 3. Programación estructurada y algoritmia | 55 
 
 
3.1. Suma de pares 
 
Diseñe el flujograma de un programa que muestre la suma de los números pares menores o 
iguales que 100. 
 
Posible solución: 
 
 
BEGIN
suma ← 0 
numero ← 2
numero ≤ 100
suma ← suma + numero
numero ← numero + 2
END
SI NO
Mostrar suma
 
 
56 | Informática. Libro de problemas 
3.2. Tabla de multiplicar 
 
Diseñe el flujograma de un programa que recoja por pantalla un número entero positivo 
comprendido en el intervalo [0,9] y que muestre la tabla de multiplicar del mismo. En caso 
de que el valor introducido por el usuario no sea válido, deberá informar del error y 
permitirle introducir un nuevo valor. 
 
Posible solución: 
 
Leer n
i ← 0
n ≥ 0 AND n≤9
END
BEGIN
Mostrar 
“ERROR VALOR”
i ≤ 10
i ← i + 1
Mostrar n x i
NO
SI
SI NO
 
 
 
 
 
 
Capítulo 3. Programación estructurada y algoritmia | 57 
 
 
3.3. Calcular hora 
 
Diseñe el flujograma de un programa que calcula la siguiente hora. Por ejemplo, si el usuario 
introduce las 14 horas, 32 minutos y 50 segundos el programa devolverá las 14:32:51. El 
programa debe contemplar aquellos casos en los que los horas, minutos o segundos alcancen 
sus valores límite. Por ejemplo, si el usuario introduce las 19 horas, 59 minutos y 59 segundos, 
entonces deberá devolver las 20:00:00 horas. 
 
Posible solución: 
 
BEGIN
s ← s + 1 
s < 59
END
Leer h
Leer m
Leer s
SI NO
m ← m + 1 
m < 59
SI NO
s ← 0
h ← 0 
h = 23
SI NO
m ← 0 
h ← h + 1
Mostrar h:m:s
 
58 | Informática. Libro de problemas 
3.4. Corredor elegido 
 
Escriba el flujograma de un programa que determine si un atleta es seleccionado para correr 
una maratón. Para seleccionar a un corredor, debe haber terminado una maratón anterior en 
un tiempo máximo. Los tiempos de calificación son 150 minutos para hombres menores de 
40 años, 175 minutos para hombres igual o mayor de 40 años, y 180 minutos para mujeres. 
Los datos a introducir al programa son los siguientes: sexo (H/M), edad y tiempo efectuado 
en su anterior maratón. El programa mostrará el mensaje "Seleccionado" o "No seleccionado", 
según los criterios anteriormente indicados. 
 
Posible solución: 
 
sexo = V
END
Mostrar 
“SELECCIONADO”
BEGIN
Leer sexo
Leer edad
Leer tiempo
seleccionado ← 0 
edad < 40 AND
tiempo ≤ 150
seleccionado ← 1
SI
SI NO
edad ≥ 40 AND
tiempo ≤ 175
seleccionado ← 1
SI NO
tiempo ≤ 180
seleccionado ← 1
SI
NO
NO
seleccionado = 1
Mostrar 
“NO SELECCIONADO”
 
 
 
 
 
Capítulo 3. Programación estructurada y algoritmia | 59 
 
 
3.5. Calcular cuadros y cubos 
 
Diseñe el flujograma de un programa que calcule los cuadrados y los cubos de los números 
comprendidos entre dos valores M y N introducidos por teclado. Si N no es mayor que M, el 
programa finalizará su ejecución mostrando un mensaje de error. 
 
Posible solución: 
 
BEGIN
END
Mostrar M x M
Leer M
Leer N
M < N
Mostrar 
“ERROR VALORES
NO VÁLIDO”
NO
M ≤ N
NO
SI
Mostrar M x M x M
M ← M + 1
SI
 
 
 
 
 
 
60 | Informática. Libro de problemas 
3.6. Número primo 
 
Diseñe el flujograma de un programa que reciba un número entero positivo mayor a 0 y que 
determine si se trata de un número primo. Recuerde que un número es primo si tiene 
exactamente dos divisores: el 1 y él mismo. 
 
Posible solución 1: 
 
BEGIN
d ← 1 
END
Leer n
n ≤ 0Mostrar “ERROR VALOR”
SI
NO
c ← 0
d ≤ n
SI NO
N mod d = 0
c ← c + 1
d ← d + 1
SI NO
c = 2
Mostrar 
“ES PRIMO”
Mostrar 
“NO ES PRIMO”
SI NO
 
 
 
Capítulo 3. Programación estructurada y algoritmia | 61 
 
 
Posible solución 2: 
 
BEGIN
d ← 1 
END
Leer n
n ≤ 0Mostrar “ERROR VALOR”
SI
NO
c ← 0
SI NO
n mod d = 0
c ← c + 1
d ← d + 1
SI NO
c = 1
Mostrar 
“ES PRIMO”
Mostrar 
“NO ES PRIMO”
SI NO
1≤
≤
c
AND
nd
 
 
 
 
62 | Informática. Libro de problemas 
3.7. Análisis de secuencia numérica 
 
Realice el flujograma de un programa que realice la siguiente tarea. Inicialmente debe 
solicitar al usuario el número de valores numéricos que desea introducir por teclado. 
Seguidamente debe verificar que el valor recibido es mayor a 0. Si esto se cumple, el 
programa recogerá todos valores enteros (positivos y negativos) del usuario. Por último, el 
programa devolverá los siguientes datos: número más grande, número más pequeño, la 
media de los valores introducidos. 
 
Posible solución: 
END
BEGIN
Leer n
n ≤ 0Mostrar “ERROR VALOR”
SI
NO
Leer v
min ← v
max ← v
suma ← v
c ← 1
c < n
Leer v
min > v
min ← v
SI NO
max < v
max ← v
SI NO
suma ← suma + v
c ← c + 1
SI NO
Mostrar max
Mostrar min
Mostrar suma/n
 
Capítulo 3. Programación estructurada y algoritmia | 63 
 
 
3.8. Suma de números 
 
Escriba el flujograma de un programa que encuentre el primer valor N para el que la suma 
 
1 + 2 + 3 + 4 + ....+ N 
 
exceda un valor M que se introduce por teclado. El programa debe asegurarse que M es un 
valor entero positivo mayor a 0. 
 
Posible solución: 
 
suma ← 1 
suma > M
END
Mostrar N
BEGIN
Leer M
M ≤ 0Mostrar “ERROR VALOR”
SI
NO
N ← 1 
SI
N ← N + 1
suma ← suma + N
NO
 
 
 
 
 
64 | Informática. Libro de problemas 
3.9. Potencia 
 
Desarrolle el flujograma de un programa en C que reciba un número entero positivo N y que 
calcule el valor NN. Si el número N introducido por el usuario fuera menor o igual a 0, el 
programa terminará mostrando un mensaje de error. 
 
Posible solución: 
 
BEGIN
pot ← N 
N ≤ 0
END
Leer N
Mostrar “ERROR 
VALOR”
SI
c ← 1 
c < N
NO
NO
Mostrar pot
pot ← pot x N
c ← c + 1
SI
 
Capítulo 3. Programación estructurada y algoritmia | 65 
 
 
3.10. Sucesión de ULAM 
 
Desarrolle el flujograma de un programa en C que reciba un entero positivo N y que 
devuelva la sucesión de ULAM. Se debe comprobar que el valor N es mayor o igual a 1. El 
cálculo de la sucesión de ULAM consiste en los siguientes pasos: 
 
1. Se inicia con cualquier entero positivo N. 
2. Si el número es par, se divide entre 2. Si es impar, se multiplica por 3 y se suma 1 al 
resultado. 
3. Se deben obtener sucesivamente números enteros repitiendo el proceso descrito en el 
paso anterior. 
4. El proceso finaliza cuando se obtenga el número 1. 
 
Por ejemplo, si el entero inicial es 45, la secuencia es la siguiente: 45, 136, 68, 34, 17, 52, 26, 13, 
40, 20, 10, 5, 16, 8, 4, 2, 1. 
 
Posible solución: 
 
N = 1
END
BEGIN
Leer N
N ≤ 0Mostrar “ERROR VALOR”
SI
NO
SI NO
N mod 2 = 0
N ← N / 2 N ← N x 3
N ← N + 1
SI NO
Mostrar N
 
 
 
 
 
 
4 
TIPOS DE DATOS 
PRIMITIVOS 
Capítulo 4. Tipos de datos primitivos | 69 
 
 
4.1. Operadores de asignación, aritméticos y asignación compuesta 
 
 
Observe el código que se muestra a continuación. ¿Qué valor adopta la variable y tras 
ejecutar la operación resaltada en negrita? 
int x=3, y=5; 
x = y; 
y = x; 
Solución: y = 5 
Comentarios: 
Debido a que el valor almacenado en la variable y (5) se ha guardado en la variable x, la 
operación destacada en negrita vuelve a almacenar dicho valor en la variable y. 
 
 
Observe el código que se muestra a continuación. ¿Qué valor adopta la variable z tras 
ejecutar la operación resaltada en negrita? 
int x=7, y=2, z; 
z = x / y; 
Solución: z = 3 
Comentarios: 
La división entera produce un cociente entero. Cualquier parte fraccionaria se desecha, no 
hay redondeo. Por lo tanto, la operación 7 / 2 produce como resultado 3, siendo este el 
valor que se almacena en la variable z. 
 
 
Observe el código que se muestra a continuación. ¿Qué valor adopta la variable z tras 
ejecutar la operación resaltada en negrita? 
int x=7, y=2; 
float z; 
z = x / y; 
Solución: z = 3.0 
Comentarios: 
La división entera produce un cociente entero. Cualquier parte fraccionaria se desecha, no 
hay redondeo. Por lo tanto, la operación7 / 2 produce como resultado 3, el cual se convierte 
posteriormente a un valor punto flotanto (3.0) para ser almacenado en la variable z. 
70 | Informática. Libro de problemas 
 
 
Observe el código que se muestra a continuación. ¿Qué valor adopta la variable z tras 
ejecutar la operación resaltada en negrita? 
int x=7, y=2; 
int z; 
z = x / y; 
Solución: z = 3 
Comentarios: 
La división entre variables float produce un resultado 3.5 pero al guardarlo en una 
variable entera se pierde la parte fraccionaria. 
 
 
 
Observe el código que se muestra a continuación. ¿Qué valor adopta la variable z tras 
ejecutar la operación resaltada en negrita? 
int y=2; 
float z; 
z = 7 / y; 
Solución: z = 3.0 
Comentarios: 
Un literal sin decimal (como el número 7) se codifica como un entero. La división entera 
produce un cociente entero. Cualquier parte fraccionaria se desecha, no hay redondeo. Por 
lo tanto, la operación 7 / 2 produce 3, siendo este el valor que se almacena en la variable z. 
 
 
 
Observe el código que se muestra a continuación. ¿Qué valor adopta la variable z tras 
ejecutar la operación resaltada en negrita? 
int y=2; 
float z; 
z = 7.0 / y; 
Solución: z = 3.5 
Comentarios: 
Un literal con decimal (como el número 7. o 7.0) se codifica como un punto flotante y, por 
lo tanto, la división produce un resultado con decimal 3.5. 
Capítulo 4. Tipos de datos primitivos | 71 
 
 
 
Observe el código que se muestra a continuación. ¿Qué valor adopta la variable c tras 
ejecutar la operación resaltada en negrita? 
int a=11, b=3; 
short c; 
c = a % b; 
Solución: c = 2 
Comentarios: 
El operador % devuelve el resto que produce la división entera entre el contenido de la 
variable a el contenido de la varible b. 
Recuerde que el operador de módulo solamente se puede aplicar a enteros (es decir, las 
variables a y b no pueden ser números reales). 
 
 
Observe el código que se muestra a continuación. ¿Qué valor adopta la variable c tras 
ejecutar la operación resaltada en negrita? 
int a=11, b=3; 
float c; 
c = a % b; 
Solución: c = 2.0 
Comentarios: 
El operador % devuelve el resto que produce la división entera entre el contenido de la 
variable a el contenido de la varible b. El resultado del operador módulo (2) se almacena 
en la variable c que, al ser de tipo float, debe convertirse en un valor punto flotante. 
 
 
 
Observe el código que se muestra a continuación. ¿Qué valor adopta la variable x tras 
ejecutar la operación resaltada en negrita? 
int x=3, y=5; 
x = y++ + 2; 
Solución: x = 7 
Comentarios: 
La operación resaltada en negrita es equivalente a ejecutar las siguientes operaciones: 
x = y + 2; 
y = y + 1; 
72 | Informática. Libro de problemas 
Es decir, primero se ejecuta la operación x = y + 2 donde se suma el valor almacenado 
en la variable y (5) y literal entero 2. El resultado de esta operación se almacena en la 
variable x. A continuación, se ejecuta la operación y = y + 1 que almacena en la variable 
y el valor de la misma pero incrementado en una unidad. 
En definitiva, la variable x almacena el valor 7, mientra que la variable y el valor 6. Observe 
que el valor almacenado inicialmente en la variable x se pierde. 
 
 
 
Observe el código que se muestra a continuación. ¿Qué valor adopta la variable "x" tras 
ejecutar la operación resaltada en negrita? 
int x, y=5; 
x = 3 * y++; 
Solución: x = 15 
Comentarios: 
La operación resaltada en negrita es equivalente a ejecutar las siguientes operaciones: 
x = 3 * y; 
y = y + 1; 
Es decir, primero se multiplica el valor inicial de la variable y (5) con 3 y el resultado se 
almacena en x. A continuación, el contenido almacenado en la variable y se incrementa en 
una unidad, almacenándose el nuevo valor en dicha variable. 
En definitiva, la variable x toma el valor de 15 mientras que y toma el valor de 6. 
 
 
 
Observe el código que se muestra a continuación. ¿Qué valor adopta la variable x tras 
ejecutar la operación resaltada en negrita? 
int x=1, y=5; 
x = ++y + 2; 
Solución: x = 8 
Comentarios: 
La operación resaltada en negrita es equivalente a ejecutar las siguientes operaciones: 
y = y + 1; 
x = y + 2; 
La primera operación incrementa en una unidad el valor almacenado en la variable y. 
Seguidamente, la segunda operación suma el número 2 y el nuevo valor almacenado en la 
variable y, de manera que el resultado se almacena en la variable x. 
Capítulo 4. Tipos de datos primitivos | 73 
 
 
En definitiva, tras ejecutar la operación indicada en este ejercicio, la variable y contiene el 
valor 6 mientras que la variable x el valor 8. Observe que el valor inicial de la variable x (1) 
se pierde. 
 
 
 
Observe el código que se muestra a continuación. ¿Qué valor adopta la variable x tras 
ejecutar la operación resaltada en negrita? 
int x, y=5; 
x = 3 * ++y; 
Solución: x = 18 
Comentarios: 
La operación resaltada en negrita es equivalente a ejecutar las siguientes operaciones: 
y = y + 1; 
x = 3 * y; 
Es decir, primero se incrementa en una unidad el valor almacenado en y. La segunda 
operación, multiple el literal entero 3 por el nuevo valor de la variable y, almacenándose 
el resultado en la variable x. 
En definitiva, tras ejecutar la operación indica en este ejercicio, la variable y toma el valor 
6 y la variable x el valor 18. 
 
 
 
Observe el código que se muestra a continuación. ¿Qué valor adopta la variable z tras 
ejecutar la operación resaltada en negrita? 
int x=5, y=8, z; 
z = ++x + y++; 
Solución: z = 14 
Comentarios: 
La operación resaltada en negrita es equivalente a ejecutar las siguientes operaciones: 
x = x + 1; 
z = x + y; 
y = y + 1; 
Tras ejecutar estas operaciones, la variable x adopta el valor 6, la variable y el valor 9 y la 
variable z el valor 14. 
 
74 | Informática. Libro de problemas 
 
Observe el código que se muestra a continuación. ¿Qué valor adopta la variable z tras 
ejecutar la operación resaltada en negrita? 
int x=5, y=8, z; 
x = ++x + ++y; 
Solución: z = 15 
Comentarios: 
La operación resaltada en negrita es equivalente a ejecutar las siguientes operaciones: 
x = x + 1; 
y = y + 1; 
z = x + y; 
Tras ejecutar estas operaciones, la variable x adopta el valor 6, la variable y el valor 9 y la 
variable z el valor 15. 
 
 
 
Observe el código que se muestra a continuación. ¿Qué valor adopta la variable d tras 
ejecutar la operación resaltada en negrita? 
int a=5, b=2; 
short c=10, d; 
d = a + b + c--; 
Solución: d = 17 
Comentarios: 
La operación resaltada en negrita es equivalente a ejecutar las siguientes operaciones: 
d = a + b + c; 
c = c - 1; 
Tras ejecutar estas operaciones, la variable d adopta el valor 17 y la variable c el valor 9. El 
valor almacenado en las variables a y b no cambia. 
 
 
 
Observe el código que se muestra a continuación. ¿Qué valor adopta la variable d tras 
ejecutar la operación resaltada en negrita? 
int a=5, b=2; 
float c=10, d; 
d = a + b + --c; 
Solución: d = 16.0 
Capítulo 4. Tipos de datos primitivos | 75 
 
 
Comentarios: 
La operación resaltada en negrita es equivalente a ejecutar las siguientes operaciones: 
c = c - 1; 
d = a + b + c; 
Tras ejecutar estas operaciones, la variable d adopta el valor 17 y la variable c el valor 9. 
 
 
 
Observe el código que se muestra a continuación. ¿Qué valor adopta la variable a tras 
ejecutar la operación resaltada en negrita? 
int a = 5; 
a *= 2; 
Solución: a = 10 
Comentarios: 
La operación resaltada en negrita es equivalente a ejecutar la siguiente operación: 
a = a * 2; 
Tras ejecutar esta operación, la variable a adopta el valor 10. 
 
 
 
Observe el código que se muestra a continuación. ¿Qué valor adopta la variable a tras 
ejecutar la operación resaltada en negrita? 
int a = 5, b = 3; 
a *= b; 
Solución: a = 15 
Comentarios: 
La operación resaltada en negrita es equivalente a ejecutar la siguiente operación: 
a = a * b; 
Tras ejecutar

Continuar navegando

Materiales relacionados

13 pag.
511103004_es

User badge image

Salud Vida

17 pag.
511102009_es

SIN SIGLA

User badge image

Jay Bieichbi

584 pag.
iap

SIN SIGLA

User badge image

Beni Del toro