====== Entrega del Módulo Teórico 1 - 75.01. Computación - 2.º cuatrimestre 2008 ====== **Cátedra:** Grossi\\ **Cuatrimestre:** 2.º Cuatrimestre 2008\\ ===== Enunciado ===== - Teniendo en cuenta que un algoritmo por definición es: “un conjunto finito de instrucciones ejecutables, no ambiguas, que dirige a una actividad que termina o resuelve un problema en tiempo limitado”, analizar los siguientes enunciados de problemas y determinar si son suficientes para poder resolverlos a través de algoritmos. Justificar la respuesta. - Dividir dos números reales. - Calcular la fuerza que actúa sobre un cuerpo en gramos por centímetro cuadrado a través de la segunda ley de Newton. Se tiene como datos la masa del cuerpo (en gramos) y la aceleración (en centímetros por segundo cuadrado). - Hacer el cableado eléctrico de una fábrica que se encuentra cerca de Rosario. - Expresar el siguiente número decimal en binario con hasta 12 dígitos fraccionarios a partir de su conversión a hexadecimal. Hacer el desarrollo de la conversión y comprobar el resultado obtenido.\\ 252.68 - Convertir las siguientes representaciones en complemento a dos a su forma decimal correspondiente: - 1110101 - 0101111 - Dados los siguientes patrones expresados en notación hexadecimal: B5 y 9D. - Convertir las siguientes representaciones a su forma equivalente en complemento a dos empleando patrones de ocho bits. - Sumar los patrones expresados en complemento a dos. - Determinar si el resultado obtenido es correcto. Justificar la respuesta. - Codificar el siguiente patrón en el formato de coma flotante normalizado de 16 bits, con exponente expresado en notación en exceso para un patrón de 5 bits: -0.341 - Indicar el resultado de aplicar un desplazamiento circular de 4 bits a la derecha a la siguiente cadena de bits: 01001010 - Resolver las siguientes operaciones: - 01001011 AND 10101011 - 1011010 OR 0110111 - 0110101 XOR 1110010 - Suponga que desea aislar los dos bits centrales de una cadena de 8 bits, colocando ceros en los 6 restantes. ¿Qué operación lógica deberá emplear y con qué cadena o máscara? - Utilizar el lenguaje de máquina especificado en el curso para escribir un programa que tome un patrón expresado en notación de coma flotante de la celda FD y devuelva el exponente del mismo expresado en complemento a dos. El resultado deberá almacenarse en la celda FF. Iniciar el contador del programa con el valor 00. Deberá comentarse el programa describiendo cuál es el objetivo de cada instrucción utilizada, es decir, para qué se utiliza cada instrucción.\\ **Recomendación:** antes de resolver el ejercicio leer las características de la máquina ideal con la que se trabaja. ===== Informe ===== Compuesto en $\fontfamily{ppl}\selectfont \LaTeX$ . El texto y las ecuaciones matemáticas están en tipografía $\fontfamily{ppl}\selectfont Palatino$ . En general, para hacer todo el TP, se consultaron: [[http://tug.ctan.org/tex-archive/info/beginlatex/beginlatex-3.6.pdf|A beginner's introduction to typesetting with LaTeX]] y [[http://www.ctan.org/tex-archive/info/lshort/english/lshort.pdf|The not so short introduction to LaTeX2e]]. Descargar PDF: {{:materias:75:01:tt1_grossi_022008_01.pdf|Entrega del Módulo Teórico 1}} ++++Ver fuente LaTeX| \documentclass[a4paper,10pt]{article} \usepackage[latin1]{inputenc} \usepackage[T1]{fontenc} \usepackage[spanish]{babel} %\usepackage{fancyhdr} %\usepackage{anysize} \usepackage{nicefrac} \usepackage{amssymb} \usepackage[osf,sc]{mathpazo} %\usepackage{lastpage} \usepackage{color} \begin{document} \newcommand{\bin}{_\mathrm{b}} \newcommand{\dec}{_\mathrm{d}} \newcommand{\hex}[1]{\mathrm{{#1}_h}} \newcommand{\divis}[4]{% \begin{array}{r@{\hspace{5pt}}l}% #1 & \begin{array}{|l} #2 \\\hline \end{array}\\% dividendo y divisor \nicefrac{#3}{} & #4% resto y cociente \end{array}} \newcommand{\igual}{&=&} %\newcommand{\nsf}[1]{\(\mathrm{#1}\)} \newcommand{\¿}{\mbox{,}} \newcommand{\nsf}{\fontfamily{ppl}\selectfont} \newlength{\altmex} \newcommand{\finis}{% \settoheight{\altmex}{\mbox{M}}% \addtolength{\altmex}{-1ex}% \textcolor[named]{Gray}{\,\rule[0.5\altmex]{1ex}{1ex}}% } \title{Guía Ejercicios Obligatorios\\ Módulo Teórico 1} \author{Iñaki García Mendive \qquad XX\,XXX} \date{10 de Septiembre de 2008} \maketitle %\marginsize{25mm}{15mm}{10mm}{25mm} %\thispagestyle{empty} %\pagestyle{fancyplain} %\lhead[\fancyplain{}{}]{\fancyplain{}{}} %\chead[\fancyplain{}{}]{\fancyplain{}{}} %\rhead[\fancyplain{}{}]{\fancyplain{}{}} %\lfoot[\fancyplain{}{}]{\fancyplain{}{}} %\cfoot[\fancyplain{}{}]{\fancyplain{Página \thepage\ de \pageref{LastPage}}{Página \thepage\ de \pageref{LastPage}}} %\rfoot[\fancyplain{}{}]{\fancyplain{}{}} \begin{enumerate} \item \begin{enumerate} \item Se puede resolver mediante un algoritmo, porque la operación es finita y no hay ambigüedades en su resolución. \item No es resoluble algorítmicamente porque falta el dato de la superficie del cuerpo en cuestión. \item No es resoluble mediante un algoritmo pues el enunciado es ambiguo: la fábrica está \emph{cerca} de Rosario, pero no se define la ubicación con precisión. \end{enumerate} \item \( 252.68\dec \): \[ \divis{252}{16}{12}{15} \] con lo cual \( 252.68\dec = \hex{(FC\¿\mbox{parte fraccionaria})}\), donde <> se calcula así: \[\begin{array}{rcrcl} 0.68 \cdot 16 \igual 10.88 & \rightarrow & \hex{A},\\ 0.88 \cdot 16 \igual 14.08 & \rightarrow & \hex{E},\\ 0.08 \cdot 16 \igual 1.28 & \rightarrow & \hex{1}. \end{array}\] Finalmente, se tiene \( 252.68\dec = \hex{FC\¿AE1}\). Para convertir a binario sólo hace falta recordar la representación binaria de cada dígito hexadecimal, y escribirlas una a continuación de la otra: \[ \hex{FC\¿AE1} = 1111\,1100.1010\,1110\,0001\bin.\] \item \begin{enumerate} \item \({111\,0101}\bin = -{000\,1011}\bin = {-11}\dec.\) \item \({010\,1111}\bin = {\left(32+8+4+2+1\right)}\dec = {47}\dec.\) \end{enumerate} \item \begin{enumerate} \item \( \begin{array}[t]{rcl} \hex{B5} \igual {1011\,0101}\bin,\\ \hex{9D} \igual {1001\,1101}\bin. \end{array} \) \item \(\begin{array}[t]{cr@{}c} \raisebox{-5pt}[0pt][0pt]{\makebox[0mm]{+}} & {1011\,0101}\bin\\ & {1001\,1101}\bin\\ \cline{1-2} & {1\,0101\,0010}\bin&. \end{array}\) \item Como el patrón elegido es de ocho bits, descartamos el bit más significativo, y nos queda \( {0101\,0010}\bin = \hex{52} \). Este resultado es claramente erróneo, pues \( \hex{B5} + \hex{9D} = \hex{152}\). \end{enumerate} \item Tenemos un formato de coma flotante normalizado de 16 bits, es decir: \begin{itemize} \makeatletter \@beginparpenalty=10000% \makeatother \item Un bit para el signo: en este caso, \(1\), por ser negativo el número. \item Diez bits para la mantisa: \[\begin{array}{rcl} 0.341 \cdot 2 \igual 0.682\\ 0.682 \cdot 2 \igual 1.364\\ 0.364 \cdot 2 \igual 0.728\\ 0.728 \cdot 2 \igual 1.456\\ 0.456 \cdot 2 \igual 0.912\\ 0.912 \cdot 2 \igual 1.824\\ 0.824 \cdot 2 \igual 1.648\\ 0.648 \cdot 2 \igual 1.296\\ 0.296 \cdot 2 \igual 0.592\\ 0.592 \cdot 2 \igual 1.184, \end{array}\] % \({0.341}\dec={0.0101\,0111\,01}\bin = {\left(0.1010\,1110\,1 \cdot 10^{-1}\right)}\bin\), con lo cual la mantisa es: \({1\,0101\,1101}\bin\). \item Cinco bits para el exponente:\footnote{expresado en notación en exceso para un patrón de 5 bits.} \({(-1+16)}\dec={15}\dec=01111\bin\). \end{itemize} % Finalmente nos queda: \[{-0.341}\dec = {1 \ 01111 \ 1\,0101\,1101}\bin.\] \item \(\begin{array}[t]{r@{\,}l} 0100&1010\\ 0010&0101\\ 1001&0010\\ 0100&1001\\ 1010&0100.\end{array}\) \item \begin{enumerate} \item \(\begin{array}[t]{cr@{\,}r@{}c} & 0100&1011\\ \mathrm{AND} & 1010&1011\\ \cline{1-3} & 0000&1011&. \end{array}\) \item \(\begin{array}[t]{cr@{\,}r@{}c} & 101&1010\\ \mathrm{OR} & 011&0111\\ \cline{1-3} & 111&1111&. \end{array}\) \item \(\begin{array}[t]{cr@{\,}r@{}c} & 011&0101\\ \mathrm{XOR} & 111&0010\\ \cline{1-3} & 100&0111&. \end{array}\) \end{enumerate} \item La operación lógica a emplear es la conjunción (\(\land\)), con la máscara \(0001\,1000\). \item \begin{tabular}[t]{c|p{0.7\textwidth}} \nsf 12FD & Cargo el contenido de la celda \(\hex{FD}\) en el registro R2.\\ \nsf A204 & Roto el patrón de bits del registro R2 un bit a la derecha cuatro veces.\\ \nsf 2107 & Cargo el patrón \(0000\,0111\bin\) en el registro R1.\\ %\nsf 8122 & Almaceno R1 \textsc{and} R2 en el registro R2\\ \nsf 8122 & Almaceno R1 \(\land\) R2 en el registro R2.\\ \nsf 2104 & Cargo el patrón \(0000\,0100\bin\) en el registro R1.\\ %\nsf 9122 & Almaceno R1 \textsc{xor} R2 en el registro R2\\ \nsf 9122 & Almaceno R1 \(\veebar\) R2 en el registro R2.\\ \nsf 32FF & Almaceno el contenido de R82 en la celda \(\hex{FF}\).\\\ \nsf C000 & Finalizo el programa.\finis \end{tabular} \end{enumerate} \end{document} ++++ ===== Discusión ===== Si ves algo que te parece incorrecto en la resolución y no te animás a cambiarlo, dejá tu comentario acá.