{ "metadata": { "language": "Julia", "name": "", "signature": "sha256:61a7d5cedeea25efe866fe8e2c079fa0703b51bce3594e4bf7c6ac667c6c3d6c" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "En este notebook, investigaremos c\u00f3mo se representan los n\u00fameros enteros y reales en la computadora." ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "N\u00fameros enteros" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Los humanos solemos utilizar base 10 para representar los n\u00fameros." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[1] Pensemos en el entero $n = 314159$. Sus d\u00edgitos son $a_5 = 3$, $a_4 = 1$, ..., $a_0 = 9$. \n", "Escribe $n$ en t\u00e9rminos de potencias de $10$. Podemos escribir $314159_{10}$ para enfatizar la base." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[2] La computadora trabaja en t\u00e9rminos de *d\u00edgitos binarios*, o bits, que pueden tomar s\u00f3lo el valor 0 o 1, y por lo tanto representa los n\u00fameros en base 2. Cu\u00e1l es la representaci\u00f3n en base 2 (*binario*) del n\u00famero $n = 50_{10}$?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[3] (i) Escribe una funci\u00f3n que acepta una cadena en binario y regresa el entero correspondiente.\n", "\n", "(ii) Escribe una funci\u00f3n que acepta un entero y regresa su representaci\u00f3n en binario como una cadena. Comprueba tu respuesta usando la funci\u00f3n `bits` de Julia." ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "N\u00fameros reales" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "De igual manera, nosotros solemos representar los n\u00fameros reales con expresiones en base 10 utilizando un *punto decimal* para separar la parte entera y la parte fraccionaria. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[4] Escribe el n\u00famero $p = 31.4159$ en t\u00e9rminos de potencias de $10$. \u00bfC\u00f3mo podemos llamar a los d\u00edgitos para que la expresi\u00f3n quede bonita?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[5] La computadora trabaja en t\u00e9rminos de potencias de 2. \n", "\n", "(i) \u00bfCu\u00e1l es el valor del n\u00famero $101.0101_{2}$? Aqu\u00ed hemos utilizado un \"punto binario\".\n", "\n", "(ii) Escribe una funci\u00f3n que toma una cadena en binario que incluya un punto y regresa el n\u00famero correspondiente.\n", "\n", "(iii) Escribe una funci\u00f3n que toma un n\u00famero real y regresa la cadena en binario correspondiente." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[6] \u00bfC\u00f3mo se representa $0.1_{10}$ en binario? \u00bfQu\u00e9 notas? \u00bfEs sorprendente?" ] }, { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "La representaci\u00f3n \"punto flotante\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "El conjunto de n\u00fameros reales es no-numerable. El conjunto de los n\u00fameros que se pueden representar en la computadora usando un espacio finito es finito, sea la que sea la representaci\u00f3n que se utilice. \n", "La representaci\u00f3n que se ha adoptado se llama \"punto flotante\". En Julia, los n\u00fameros flotantes por defecto se representan con 64 bits. Investiguemos qu\u00e9 representan los distintos bits." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[6] Utiliza la funci\u00f3n `bits` para investigar c\u00f3mo se representan los siguientes n\u00fameros *flotantes*. [Para comprobar si el n\u00famero es flotante, se utiliza la funci\u00f3n `typeof`.]\n", "\n", "$1$, $\\frac{1}{2}$, $\\frac{1}{4}$, $2$, $-2$, $0.1$, $0.2$, $0.4$, $3.14159$, $31.4159$, etc.\n", "\n", "Ser\u00e1 \u00fatil escribir una funci\u00f3n que compara dos cadenas y te indica en d\u00f3nde difieren. \n", "\n", "[Una manera interesante de hacerlo es utilizar la funci\u00f3n `html` del paquete `Interact`, que regresa una versi\u00f3n renderizada en HTML de una cadena, o `Base.Markdown` en la versi\u00f3n 0.4 de Julia, que permite escribir `md\"...\"` para renderizar la cadena en Markdown.]\n", "\n" ] } ], "metadata": {} } ] }