\documentclass[12pt]{article} \title{Computer Architecture -- Assignment 11 Bonus} \author{Claudio Maggioni \and Tommaso Rodolfo Masera} \date{} \begin{document} \maketitle \section{Bonus Question 1} \subsection{Decimal to Hexadecimal} \textbf{All the numbers are going to be first converted to binary and then to hexadecimal for an easier calculation} \begin{itemize} \item[a)] \textbf{\large 11}; First we find how 11 is expressed in binary which is 1011 and then we convert it to scientific base 2 notation: $1011 = 1.\textbf{011 } \times 2^3$. The sign bit is 0 since $11>0$ and therefore the number is positive. To determine the exponent we take the single precision bias (127) and we add to it the amount of times we moved a bit past the floating point: $127 + 3 = 130$. We then convert 130 to decimal by successive halving:\\ \begin{tabular}[h]{l|c} \textbf{Fraction} & \textbf{Rest}\\ \hline \\ $130/2 = 65$ & 0 \\\\ $65/2 = 32$ & 1 \\ $32/2 = 16$ & 0 \\ $16/2= 8$ & 0 \\ $8/2 = 4$ & 0 \\ $4/2 = 2$ & 0 \\ $2/2 = 1$ & 0 \\ $1/2 = 0$ & 1 \\ \end{tabular} By reading from most significant bit to least significant bit we get 10000010 for our exponent. We then finally assemble the floating point binary number with the parts we have converted: $0\ 10000010\ 01100000000000000000000 = 01000001001100000000000000000000$ And we convert to hexadecimal by splitting the number in 4 bit groups and converting each group to its equivalent hexadecimal digit: $0100\ 0001\ 0011\ 0000\ 0000\ 0000\ 0000\ 0000 = 4\ 1\ 3\ 0\ 0\ 0\ 0\ 0\ = 41300000$. \\\\ \textbf{From now on the passages are going to include only the calculations to avoid verbosity. Nonetheless, the same reasoning will be applied for each conversion.} \item[b)] \textbf{\large 5/64}; Sign bit = 0 $\frac{5}{64} = 0.078125$ Conversion to binary:\\ \begin{itemize} \item $0.078125 \times 2 = \textbf{0} + 0.15625$; \item $0.15625 \times 2 = \textbf{0} + 0.3125$; \item $0.3125 \times 2 = \textbf{0} + 0.625$; \item $0.625 \times 2 = \textbf{1} + 0.25$; \item $0.25 \times 2 = \textbf{0} + 0.5$; \item $0.5 \times 2 = \textbf{1} + 0$; \end{itemize} Result of conversion: $0.000101$. Normalization to scientific notation: $1.\textbf{01} \times 2^{-4}$. Exponent bits in decimal = $127 - 4 = 123$ Conversion of exponent:\\ \begin{tabular}[h]{l|c} \textbf{Fraction} & \textbf{Rest}\\ \hline \\ $123/2 = 61$ & 1 \\\\ $61/2 = 30$ & 1 \\ $30/2 = 15$ & 0 \\ $15/2= 7$ & 1 \\ $7/2 = 3$ & 1 \\ $3/2 = 1$ & 1 \\ $1/2 = 0$ & 1 \\ \end{tabular} Exponent bits in binary = $01111011$ Final binary number = $0\ 01111011\ 01000000000000000000000 =$ $00111101101000000000000000000000$ Conversion to hexadecimal: $0011\ 1101\ 1010\ 0000\ 0000\ 0000\ 0000\ 0000 = 3$ D A $0\ 0\ 0\ 0\ 0 = 3$DA$00000$. \item[c)] \textbf{\large -5/64}; With this being the negative counterpart of the previous number we just need to flip the sign bit of $\frac{5}{64}$. With that we get: $10111101101000000000000000000000$. Which, converted to hexadecimal, gives: $1011\ 1101\ 1010\ 0000\ 0000\ 0000\ 0000\ 0000 =$ B D A $0\ 0\ 0\ 0\ 0 =$ BDA$00000$. \item[d)] \textbf{\large 6.125}; Sign bit = 0 Conversion to binary: Integer part = $6_{10} = 110_{2}$ Fractional part = $0.125_{10}$: \begin{itemize} \item $0.125 \times 2 = \textbf{0} + 0.25$; \item $0.25 \times 2 = \textbf{0} + 0.5$; \item $0.5 \times 2 = \textbf{1} + 0$; \end{itemize} = $001_2$. Normalized binary = $110.001 = 1.\textbf{10001} \times 2^2$ Exponent bits in decimal = $127 + 2 = 129$. \begin{tabular}[h]{l|c} \textbf{Fraction} & \textbf{Rest}\\ \hline \\ $129/2 = 64$ & 1 \\\\ $64/2 = 32$ & 0 \\ $32/2 = 16$ & 0 \\ $16/2= 8$ & 0 \\ $8/2 = 4$ & 0 \\ $4/2 = 2$ & 0 \\ $2/2 = 1$ & 0 \\ $1/2 = 0$ & 1 \\ \end{tabular} Exponent bits in binary = $10000001$ Final binary number = $0\ 10000001\ 10001000000000000000000 =$ $01000000110001000000000000000000$. Conversion to hexadecimal: $0100\ 0000\ 1100\ 0100\ 0000\ 0000\ 0000\ 0000 = 4\ 0$ C $4\ 0\ 0\ 0\ 0 = 40$C$40000$. \end{itemize} \subsection{Hexadecimal to Decimal} \textbf{All the numbers are going to be first converted to binary and then to decimal for an easier calculation} \begin{itemize} \item[a)] \textbf{\large 42E48000$_{16}$} Conversion to binary: $42$E$48000 = 0100\ 0010\ 1110\ 0100\ 1000\ 0000\ 0000\ 0000 =$ $ 0\ 10000101\ 11001001000000000000000 = $ $ 01000010111001001000000000000000$ From this we can observe that the sign bit is 0 (i.e. positive). Conversion of exponent from binary to decimal: $10000101 = 2^7 + 2^2 + 2^0 = 128 + 4 + 1 = 133$ To find how many bits have been moved beyond the floating point we now find the exponent for our notation: $ 133 - 127 = 6$ And we then take the mantissa to multiply it by $2^6$ (where 6 is the number we found through the last passage) to get the final binary number to convert to decimal: $1.11001001000000000000000 \times 2^6 = 1.11001001 \times 2^6 = 1110010.01$ Conversion to decimal: $1110010.01 = 2^6 + 2^5 + 2^4 + 2 + 2^{-2} = 64 + 32 + 16 + 2 + 0.25 = 114.25$ \item[b)] \textbf{\large 3F880000$_{16}$} Conversion to binary: $3$F$880000 = 0011\ 1111\ 1000\ 1000\ 0000\ 0000\ 0000\ 0000\ =$ $0\ 01111111\ 00010000000000000000000 =$ $00111111100010000000000000000000$ Sign bit = 0 Conversion of exponent from binary to decimal: $01111111 = 2^6 + 2^5 + 2^4 + 2^3 + 2^2 + 2 + 1 = 64 + 32 + 16 + 8 + 4 + 2 + 1 = 127$ Power of 2 = $127 - 127 = 0$ Final binary number: $1.0001 \times 2^0 = 1.0001$ Conversion to decimal: $1.0001 = 2^0 + 2^{-4} = 1 + 0.0625 = 1.0625$ \item[c)] \textbf{\large 00800000$_{16}$} Conversion to binary: $00800000 = 0000\ 0000\ 1000\ 0000\ 0000\ 0000\ 0000\ 0000 =$ $0\ 00000001\ 000\ 00000000000000000000 =$ $00000000100000000000000000000000$ Sign bit = 0 Conversion of exponent from binary to decimal: $00000001 = 2^0 = 1$ Power of 2 = $1 - 127 = -126$ Final binary number: $1.00000000000000000000 \times 2^{-126}$ Conversion to decimal: $1.00000000000000000000 \times 2^{-126} = 2^{-126} = 1.1754944 \times 10^{-38}$ \item[d)] \textbf{\large C7F00000$_{16}$} Conversion to binary: C$7$F$00000 = 1100\ 0111\ 1111\ 0000\ 0000\ 0000\ 0000\ 0000 =$ $1\ 10001111\ 11100000000000000000000 =$ $11000111111100000000000000000000$ Sign bit = 1 Conversion of exponent from binary to decimal: $10001111 = 2^7 + 2^3 + 2^2 + 2^1 + 2^0 = 128 + 8 + 4 + 2 + 1 = 143$ Power of 2 = $143 - 127 = 16$ Final binary number: $1.11100000000000000000000 \times 2^{16} = 1.111 \times 2^16 =$ $11110000000000000.0$ Conversion to decimal: $11110000000000000.0 = 2^16 + 2^15 + 2^14 + 2^13 = 65536 + 32768 + 16384 + 8192 = 122880 $ and, since the sign bit is 1 (i.e. negative), $= -122880$. \end{itemize} \section{Bonus Question 2} Loss of significance can occur via subtraction of values that are close to each other so that most of the significant digits get cancelled. For example let x $= 1.5 \times 2^0$ and y $=\ 1.0 \times 2^{26}$ such that the sequence of operations $r =(x+y) - y $ results in r = 0.0 which is incorrect as the actual value should be 1.5. This is due to catastrophic cancellation which occurred during the subtraction. This kind of occurrences can't be identified unless data is further examined leaving no way of checking that 0.0 is the wrong result. \end{document}