A cache problem from the 1999 MCS-284 final exam

A byte-addressed machine has a 64 KB cache, which has a 16-byte block size and is also 2-way set associative.
  1. How many bits of the address are used to select a byte within the block?
  2. How many bytes of data can be stored in each set?
  3. How many sets are there in the cache?
  4. How many bits of the address are used to index a set?
  5. If the address is 32 bits wide, how many bits is the tag field?
  6. How many bits are used in each set for tag and valid bits?