http:^^www.cs.wisc.edu^~cs354-2^cs354^solutions^q3.k.html

来自「This data set contains WWW-pages collect」· HTML 代码 · 共 138 行

HTML
138
字号
Date: Tue, 05 Nov 1996 00:32:12 GMTServer: NCSA/1.5Content-type: text/htmlLast-modified: Fri, 11 Oct 1996 14:55:46 GMTContent-length: 3975<html><head><title>CS 354 - Quiz #3</title></head><body><table border=0 width=100% align=center><tr><td width=25%><td width=50% align=center><td width=25%><tr><tr><td><b>CS 354<br>Fall 1996 <br>Section 2 </b><td><td align=right><b>SOLUTION</b><tr><td><td align=center><b>Quiz #3 for Friday October 11</b><br>3 questions, 25 points total<td></table><p><b>1. (9 points) </b> Do the following 8-bit two's complement arithmetic calculations. Show all work. Indicate if overflow occurs by writing the word "overflow"next to the calculated result.  Give a 16-bit result for the multiplication.<br><code><pre>    01011110                    11000000  + 11011000                  + 10001111 -----------                 -----------    00110110                    01001111 OVERFLOW    01010010                    01110111  - 10011000                  x 11110001 -----------                 -----------  change to addition             negative multiplier, so change problem         				    (and sign extend partial products)    01100111                                10001001 (-119)	+  1                              x 00001111 (  15)    --------                             -----------    01101000                        1111111110001001                                    1111111100010010                                    1111111000100100                                  + 1111110001001000    01010010                      ------------------  + 01101000                        1111100100000111 (-1785) -----------    10111010  OVERFLOW</pre></code><p><b>2. (9 points) </b>  Give an algorithm and then write a SAL codefragment (<b>not</b> a whole program)that does sign magnitude multiplication (<code>x * y -> z</code>).Variables <code>x</code> and <code>y</code> are given values elsewhere in theprogram.They contain 32-bit sign magnitude representations.The result of the multiplication goes in variable <code>z</code>, whichis also 32 bits and is initialized (elsewhere in the program) to 0.The code should ignore the possiblility of overflow from 32 bits.It is OK to modify variables <code>x</code> and <code>y</code>.<ul>Algorithm:  Do two's complement multiplication on the absolute valuesof x and y.  Then set the sign bit of the result.<ul><code><pre>.datamask1:  .word 0x7fffmask2:  .word 0x8000.text           xor  sign, x, y     # figure out sign of result           bgez x, abs_y       # get absolute value of x           and  x, mask1, xabs_y:     bgez y, multiply    # get absolute value of y           and  y, mask1, ymultiply:  mul  z, x, y        # do multiplication on absolute values           bgez sign, all_done           or   z, mask2, z    # set sign bitall_done:</pre></code></ul><br><br><p><b>3. (7 points) </b> Show the result of addition on the following two IEEE single precision floatingpoint values.  Use round to nearest for all rounding.<br><pre>  0 10000100  11000000000000000010100+ 0 10000111  01000000000000000000011-------------------------------------<br>To align binary points, shift the first addend 7-4=3 places to theright, keeping 3 extra digits at the least significant end for laterrounding.    10000100  1.11000000000000000010100    10000101  0.11100000000000000001010 0    10000110  0.01110000000000000000101 00    10000111  0.00111000000000000000010 100Do the addition on the mantissas.  0.00111000000000000000010 100+ 1.01000000000000000000011 000-------------------------------------  1.01111000000000000000101 100This value is already normalized, so only rounding is left.The two values that we could round to are  1.01111000000000000000101  and 1.01111000000000000000110 The result we have is exactly halfway between these two representations.So, IEEE round to nearest says choose the one that ends in a 0.Therefore, the IEEE single precision result is  0  10000111  01111000000000000000110 </pre>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?