1. a. 16 MB = 2^24  24 bits.

   b. 16 bytes = 2^4, 256 lines = 2^8
      24 - 12 = 12 bit tag
      256 lines * ( 16 bytes/line + 1 bit flag/line + 12 bit tag/line )

   c. 912739h
      byte id     9h
      line id    73h
      tag id    912h

2. a. 256 MB = 2^8 * 2^20  28 bits.

   b. 16 bytes = 2^4, 16 lines = 2^4
      28 - 8 = 20 bit tag.
      16 lines * ( 16 bytes/line + 1 bit flag/line + 20 bit tag/line )

   c. 312739h
      byte id     9h
      line id     3h
      tag  id  3127h

3. a. 64MB = 2^6 * 2^20  26 bits.

   b. 64 bytes = 2^6, 4096 lines = 2^2 * 2^10 = 2^12
      26 - 18 - 8 bit tag
      4096 lines * ( 64 bytes/line + 1 bit flag/line + 8 bit tag/line )

   c. 612739 = 0001 1000  0100 1001 1100  11 1001b
      byte id = 11 1001b = 39h
      line id = 0100 1001 1100b = 49Ch
      tag  id = 0001 1000 = 18h

4. a. 32MB = 2^5 * 2^20 = 25 bits.

   b. 8 bytes = 2^3, 128 lines = 2^7.
      25 - ( 3 + 7 ) = 15 bit tag
      128 lines * ( 8 bytes/line + 1 bit flag/line + 15 bit tag/line )

   c. 712739h = 0 0111 0001 0010 0111 0011 1001
   c. 712739h = 001 1l00 0100 1001  110 0111  001
      byte id = 001b = 1H
      line id = 110 0111b = 67h
      tag  id = 001 0000 0100 1001 = 1E49h

5. a. 16 MB = 2^4*2^20 = 24 bits

   b. 16 byte = 2^4,  1024 lines = 2^10
      24 - 14 = 10 bit tag
      1024 lines * ( 16 bytes/line + 1 bit flag/line = 10

   c. 412739h = 0100 0001 0010 0111 0011 1001b
      byte id = 1001b = 9
      line id = 10 0111 0011 = 273h
      tag  id = 01 0000 0100 = 104h