Quiz 2, 6 October 1997, 1:30-2:00pm

1. Compute (-3)x5 with Booth algorithm long-hand way, using 4-bit two's complement binary. (First convert -3 and 5 into 4-bit two's complement binary. Result should be 8 bits).

Answer:

 3 = 0011_two, -3=1100+1=1101_two
 5 = 0101_two

          1101   -> -3
        x 0101   ->  5
      --------
      00000000
   -  11111101   (1,0) pair, subtract
   -----------
      00000011 
   +  1111101    (0,1) pair, add
   -----------
      11111101
   -  111101     (1,0) pair, subtract
   -----------
      00001001
   +  11101      (0,1) pair, add
   -----------
      11110001   -> -15 

2. Find IEEE single precision floating point representation for 3.75.

Answer:

  3 = 11_two,  0.75 = 0.5 + 0.25 = 1/2 + 1/4 = 0.11_two
  3.75 = 11.11 = 1.111 x 2^1
  s = 0, (positive value),  e - 127 = 1, so e = 128
  f = 0.111
  so, the bit pattern is
  0 10000000 11100000000000000000000

3. Translate the C statement into MIPS assembly program, assuming k is in $4, s is associated with $2, and the array a[] starts from location 4000. (k, s, a[]) are integer type).

   s=0;
   for(k=0; k<100; ++k) {
      s = s + a[k];
   }

Answer:

      li $2,  0          # s = 0
      li $4,  0          # k = 0
      li $5,  4000       # start address of a[]
      li $3,  100        # upper bound

Loop: lw, $6, 0($5)      # load a[k] in $6
      add $2, $2, $6     # s = s + a[k]
      addi $4, $4, 1     # ++k
      addiu $5, $5, 4    # next word
      bne  $4, $3, Loop  # finish looping if k=100



Makeup Quiz 2', duration 30 min, 10 October 1997

1. Compute 15/4 in 5-bit unsigned binary, using the third division algorithm (the machine way). (The result should be a 5-bit quotient and 5-bit remainder).

2. Find the IEEE single-precision floating point representation for -4.025.

3. Translate the C statements into MIPS assembly program, assuming k is in $4, s is associated with $2, and the array a[ ] starts from 8000.

   s = 1;
   for(k = 1; k <= 100; ++k) {
      a[k] = s + k;
      s = k*k;
   }