Página web del curso

Ejercicio

¿Cómo se almacenaría en precisión simple según la norma IEEE 754 el número $120,875$?


Paso del sistema decimal a binario

Parte entera

Dividimos sucesivamente por $2$ hasta que el cociente es cero y los restos son los dígitos en base $2$.

$$ \begin{array}{cccc} \hline \mathrm{Dividendo} & \mathrm{Divisor} & \mathrm{Cociente} & \mathrm{Resto}&\\ \hline 120 & 2 & 60 & 0 & \uparrow \\ 60 & 2 & 30 & 0 & \uparrow \\ 30 & 2 & 15 & 0 & \uparrow \\ 15 & 2 & 7 & 1 & \uparrow \\ 7 & 2 & 3 & 1 & \uparrow \\ 3 & 2 & 1 & 1 & \uparrow \\ 1 & 2 & 0 & 1 & \uparrow \\ \hline \end{array} $$

El número empieza por el último resto y el número en binario es $\mathtt{1111000}.$

Parte fraccionaria

Multiplicamos por $2$, restamos la parte entera y repetimos hasta que la parte fraccionaria sea cero.

$$\begin{array}{lccccccc} 0,875 &\times& 2 &= &1,750 &\rightarrow & 1 & \downarrow\\ 0,75&\times& 2& = &1,5 &\rightarrow & 1& \downarrow\\ 0,5&\times& 2& = &1,0&\rightarrow & 1& \downarrow \end{array}$$

Empezamos por el la primera parte entera y el número en binario es $\mathtt{0,111}$

Y el número completo es

$$(120,875)_{10} = (\mathtt{1111000,111})_2$$

Normalización

  1. Movemos la coma de forma que aparezca un único dígito distinto de cero a su izquierda.
  2. Al mover la coma tenemos que multiplicar por $2^n$ siendo $n$ el número de posiciones que hemos movido la coma a la izquierda o $2^{-n}$ siendo $n$ el número de posiciones que hemos movido la coma a la derecha.
  3. Le añadimos el signo.

Este número normalizado sería

$$+\mathtt{1,1110\,0011\,1}\times2^6$$

con

  • Signo: $+$
  • Mantisa: $\mathtt{1,1110\,0011\,1}$
  • Exponente: $6$

Signo

Como el signo es positivo $\longrightarrow$ signo $\mathtt{0}$

Exponente

Tenemos $m=8$ bits para el exponente. Por lo tanto hay $2^m = 2^8 = 256$ combinaciones distinta y, en principio, podemos representar $256$ números. Como empezamos el valor nominal empieza en $0$ acabará en $255$. El primer número, $\mathtt{0000\,0000}$, y el último, $\mathtt{1111\,1111}$ se reservan (ya veremos luego para qué). Y como la representación es sesgada, tenemos que restar el

$$sesgo=2^{m-1}-1 = 128-1 = 127$$

para obtener el valor representado.

El valor del exponente es $6$. Para obtener el valor nominal tenemos que sumarle el sesgo y $6+127=133$ que en binario sería

$$ \begin{array}{cccc} \hline \mathrm{Dividendo} & \mathrm{Divisor} & \mathrm{Cociente} & \mathrm{Resto}&\\ \hline 133 & 2 & 66 & 1 & \uparrow \\ 66 & 2 & 33 & 0 & \uparrow \\ 33 & 2 & 16 & 1 & \uparrow \\ 16 & 2 & 8 & 0 & \uparrow \\ 8 & 2 & 4 & 0 & \uparrow \\ 4 & 2 & 2 & 0 & \uparrow \\ 2 & 2 & 1 & 0 & \uparrow \\ 1 & 2 & 0 & 1 & \uparrow \\ \hline \end{array} $$

es decir

$$(133)_{10} = (\mathtt{1000\,0101})_2$$
$$ \begin{array}{cccc} \hline \mathrm{Número}\; \mathrm{binario} & \mathrm{Valor}\; \mathrm{nominal} & & \mathrm{Valor}\; \mathrm{representado}\\ \hline \mathtt{0000\,0000}& 0& & R\\ \mathtt{0000\,0001}& 1& & -126\\ \mathtt{0000\,0010}& 2& & -125\\ \mathtt{0000\,0011}& 3& & -124\\ \cdots & \cdots & -127 & \cdots\\ \cdots & \cdots & \longrightarrow & \cdots\\ \mathtt{{\color{red}{1000\,0101}}}& {\color{red}{133}}& & {\color{red}{6}}\\ \cdots & \cdots & +127 & \cdots\\ \cdots & \cdots & \longleftarrow & \cdots\\ \mathtt{1111\,1100}& 252 & & 126 \\ \mathtt{1111\,1101}& 253 & & 126 \\ \mathtt{1111\,1110}& 254 & & 127 \\ \mathtt{1111\,1111}& 255 & & R\\ \hline \end{array} $$

Mantisa

$$(120,875)_{10}$$

La mantisa es $$\mathtt{1,{\color{ForestGreen}{1110\,0011\,1}}}.$$ Hemos de tener en cuenta el bit escondido, que no almacenamos, y que rellenamos con ceros por la derecha hasta tener 23 bits.

Número

El número $120,875$ en precisión sencilla se almacena

$$ \begin{array}{|c|c|c|} \hline \mathtt{signo}&\mathtt{exponente}&\mathtt{mantisa}\\ \hline \mathtt{0}&\mathtt{\color{red}{1000\,0101}}&\mathtt{\color{ForestGreen}{1110\,0011\,1}000\,0000\,0000\,000}\\ \hline \end{array} $$