{ "metadata": { "name": "" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Representa\u00e7\u00e3o dos n\u00fameros no computador\n", "=======\n", "Neste aula estudaremos como s\u00e3o representados os n\u00fameros no computador e como isso interfere em sua aritm\u00e9tica.\n", "\n", "Base\n", "----\n", "Se fixamos um n\u00famero natural $\\beta > 1$, que se chamar\u00e1 *base* do sistema, podemos representar todo n\u00famero inteiro $k$ como\n", ":$$ k = a_n\\beta^n+ a_{n-1}\\beta^{n-1}+\\cdots + a_0$$\n", "onde cada $a_i$ \u00e9 um n\u00famero entre $0$ e $\\beta -1$ e $a_n>0$.\n", "Dizemos que esta \u00e9 a representa\u00e7\u00e3o de $k$ na base $\\beta$ e denotamos $k=[a_n...a_0]_{\\beta}$. Podemos pensar no n\u00famero $\\beta$ como o valor m\u00e1ximo de agrupamentos que conseguimos distinguir, e para contarmos, dividimos tudo em grupos de tamanho m\u00e1ximo $\\beta$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Representa\u00e7\u00e3o dos reais\n", "-----\n", "Se $x$ \u00e9 um n\u00famero real no intervalo $(0,1)$ podemos represent\u00e1-lo como\n", ":$$ x= \\sum_{k=1}^\\infty \\frac{b_k}{\\beta^k} $$\n", "A sequ\u00eancia de $b_k$ pode ser infinita e n\u00e3o \u00e9 \u00fanica, denotaremos o n\u00famero como $x=[0.b_1b_2\\dots]_{\\beta}$\n", "\n", "A fun\u00e7\u00e3o descrita abaixo d\u00e1 a representa\u00e7\u00e3o bin\u00e1ria de um n\u00famero na representa\u00e7\u00e3o decimal." ] }, { "cell_type": "code", "collapsed": false, "input": [ "def binario(a):\n", " # da a representacao binaria do numero a \n", " ParteInteira = int(a)\n", " ParteDecimal = a-int(a)\n", " # representacao binaria da parte inteira\n", " # a lista seguinte guarda os d\u00edgitos da parte inteira\n", " ListaDigitos=[]\n", " while (ParteInteira > 0):\n", " ListaDigitos.append(ParteInteira%2)\n", " ParteInteira=ParteInteira//2\n", " # lista dos digitos depois da virgula\n", " ListaResto=[]\n", " k=1\n", " while ((ParteDecimal!=0)&(k<50)):\n", " ListaResto.append(int(2*ParteDecimal))\n", " ParteDecimal=2*ParteDecimal - int(2*ParteDecimal)\n", " k=k+1\n", " # produz a string de representacao:\n", " \n", " i=len(ListaDigitos)-1\n", " p1=\"\"\n", " while (i>=0):\n", " p1=p1+str(ListaDigitos[i])\n", " i=i-1\n", " # Depois disso p1 tem a parte inteira\n", " l=0\n", " p2=\"\"\n", " while (l 1$. Um n\u00famero real $\\alpha \\in \\mathbb{R}$ positivo pode ser escrito nesta base como:\n", ":$$\\alpha = [a_k\\cdots a_0.b_1b_2\\cdots]_{\\beta} $$\n", "Isto significa que:\n", ":$$\\alpha = a_k\\beta^k + \\cdots + a_0 + \\frac{b_1}{\\beta} +\\frac{b_2}{\\beta^2} + \\cdots $$\n", "Na equa\u00e7\u00e3o acima, colocando $\\beta^{k+1}$ em evid\u00eancia temos:\n", ":$$\\alpha = \\left( \\frac{a_k}{\\beta} + \\cdots + \\frac{a_0}{\\beta^{k+1}} + \\frac{b_1}{\\beta^{k+2}} +\\frac{b_2}{\\beta^{k+3}} + \\cdots\\right)\\times \\beta^{k+1} $$\n", "ou ainda, lembrando da nota\u00e7\u00e3o de um n\u00famero numa base dada:\n", ":$$\\alpha = [0.a_k \\cdots a_0 b_1 b_2\\cdots]_{\\beta} \\times \\beta^{k+1} $$\n", "Esta \u00faltima f\u00f3rmula \u00e9 importante. O n\u00famero real $ \\alpha$ fica caracterizado por tr\u00eas dados:\n", "\n", "* O n\u00famero $ m = [0.a_k \\cdots a_0 b_1 b_2\\cdots]_{\\beta} \\in [0.1,1)$ chamado de **mantissa**.\n", "* O n\u00famero $e = k+1 $ chamado de **expoente**\n", "* O sinal do n\u00famero $\\sigma$\n", "\n", "Esta representa\u00e7\u00e3o do n\u00famero $\\alpha$ como $\\sigma m \\times \\beta^e$ chamaremos de **representa\u00e7\u00e3o normal em ponto flutuante** na base $\\beta$.\n", "Em geral a base fica clara pelo contexto!" ] }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }