martes, 28 de septiembre de 2021

Representación en punto flotante en base 10 y en base 2

  En el siguiente ejemplo se muestra la manera de representar en el formato de punto flotante varios números reales (expresados en base 10) en la misma base o en base 2, y con un cierto número de dígitos significativos

NOTA PRELIMINAR. En la representación de un númro real $x$ en el formato de coma flotante, se considera el conjunto de dígitos $\mathcal{M}$, de tal manera que $$\text{float}(x):=\pm\,0.d_{1}\,d_{2}\,\ldots\times b^e\approx \pm\,0.d_{1}\,d_{2}\,\overset{\underbrace{n}}{\ldots},d_{n}\times b^e$$ que es la representación finita de dicha cantidad, donde $0\le d_i \prec b$ para $i=1,2,\ldots ,n$, siendo $b$ un número entero positivo que corresponde a la base de la representación, y el número entero $e$ es el exponente, que puede variar en un determinado rango; y, finalmente, el número entero positivo $n$ da cuenta de la precisión de la representación. La parte fraccionaria se denomina mantisa ( $0.d_{1}d_{2}\ldots d_{n}$ ). Para pasar a la represntación finita, utilizaremos la siguiente notación para notar las necesarias operaciones de truncamiento o bien de redondeo — recordemos que lo usual será hacerlas por redondeo &madash;: $$\mathbb{R}\ni \text{float}(x)=\pm\,0.d_{1}d_{1}\ldots \times b^e \approx \left\{\begin{matrix}\mathcal{T}(x;n)=\text{Ent}(b^n \times 0.m)\times b^{e-n} \\ \mathcal{R}(x;n)=\text{Ent}(b^n \times 0.m+\mu)\times b^{e-n}\end{matrix}\right.$$ donde $\mu$ denota media unidad en el sistema de numeracíon de base $b$ que se emplee; así, si $b=10$ es claro que $\mu=0.5$, y, si, por ejemplo, $b=2$, entonces $\mu=0.1_{2}$ ya que $0.1_{2}=2^{-1}=0.5_{10}$


***

ENUNCIADO. Hállese la representación en punto flotante ( sin dígito principal implícito ) de: a) $2/7$ en un sistema con $b=10$ y $n=6$
b) $327$ en un sistema con $b=2$ y $n=6$
c) $-4/3$ en un sistema con $b=2$ y $n=6$

SOLUCIÓN.
a)
$2/4=0.\overline{285714}_{10}\times 10^0$, luego $e=0$. Así, $4/7 \approx \mathcal{R}(4/7;6) =\text{Ent}(10^6 \times 0.\overline{285714}_{10} +0.5 )\times 10^{0-6}=$
  $=\text{Ent}(10^6 \times 0.285714285714\ldots_{10} +0.5 )\times 10^{-6}$
    $=\text{Ent}(285714.5) \times 10^{-6}$
      $=285714 \times 10^{-6}$
        $=0.285714 \times 10^{0}$

b)
$327_{10}=101000111_{2}=0.101000111_{2}\times 2^9$, luego $e=9$
Entonces, $0.101000111_{2}\times 2^9 \approx \mathcal{R}(0.101000111_{2}\times 2^9;6)=$
  $=\text{Ent}(2^6\times 0.101000111_{2}+\mu)\times 2^{9-6}$
    $=\text{Ent}(101000.111_{2}+\mu)\times 2^{3}$, donde $\mu$ ( media unidad en el sistema binario ) es $0.1_{2}$ ya que esto a su vez es igual a $0.5_{10}$
    $=\text{Ent}(101000.111_{2}+.1_{2})\times 2^{3}$
    $=\text{Ent}(101001.011_{2})\times 2^{3}$
      $=101001_{2}\times 2^{3}$
        $=0.101001_{2}\times 2^6 \times 2^{3}$
          $=0.101001_{2}\times 2^{9}$
Observación. Veamos esa cantidad en base $10$:
            $=(1\times 2^{-1}+1\times 2^{-3}+1\times 2^{-6})\times 2^{9}$
              $=1\times 2^{8}+1\times 2^{6}+1\times 2^{3}$
                $=256+64+8$
                  $=328$

c)
$4/3=1.\overline{3}_{10}=1.01010101\ldots_{2}=0.10101010\ldots_{2}\times 2^1$, luego $e=1$
Entonces $0.10101010\ldots_{2}\times 2^1 \approx $
  $\approx \mathcal{R}(0.10101010\ldots_{2};6)=$
    $=\text{Ent}(2^6\times 0.10101010\ldots_{2}+\mu)\times 2^{1-6}$, donde $\mu$ ( media unidad en el sistema $b=2$) es $\mu=.1_{2}=2^{-1}=0.5_{10}$; y, siendo $e=1$ y $n=6$, el exponente $e-n=1-6=-5$
      $=\text{Ent}(101010.1010\ldots_{2}+.1_{2})\times 2^{-5}$
        $=\text{Ent}(101011.0010\ldots_{2})\times 2^{-5}$
          $=101011\ldots_{2}\times 2^{-5}$
            $=1.01011_{2}$
              $=0.101011_{2}\times 2^1$
Finalmente, tendremos en cuenta que $\mathcal{R}(-x)=-\mathcal{R}(x)$, con lo cual podemos escribir que
                $-4/3 \approx \mathcal{R}(-4/3;6)=-\mathcal{R}(4/3;6)=-0.101011_{2}\times 2^1$
$\square$
-oOo-
Referencias:
  [1] Moreno, C., Introducción al Cálculo Numérico, UNED, Madrid, 2011
  [2] Aubanell, A. et al., Útiles básicos de Cálculo Numérico, Labor, Barcelona, 1993
  [3] Demindovich, B.O.;Maron, I.A., C., Cálculo Numérico Fundamental, Paraninfo, Madrid, 1988

No hay comentarios:

Publicar un comentario