Step 1: Note the given cache details.
The cache capacity is $16$ kB, which is equal to $16 \times 1024 = 2^{14}$ bytes.
Each cache block has a size of $16$ bytes, or $2^4$ bytes.
The main memory uses $32$-bit addresses.
Step 2: Compute the total number of cache blocks.
The number of blocks in the cache is obtained by dividing the cache size by the block size:
\[ \text{Number of cache blocks} = \frac{2^{14}}{2^4} = 2^{10} \]
Step 3: Determine the block offset field.
Because the memory is byte-addressable and each block contains $16$ bytes, the number of offset bits is:
\[ \text{Offset bits} = \log_2 16 = 4 \]
Step 4: Determine the index field.
The cache is fully associative, meaning that any memory block can be stored in any cache line.
As a result, no index bits are required:
\[ \text{Index bits} = 0 \]
Step 5: Calculate the tag field size.
A memory address is divided into three parts:
\[ \text{Tag} + \text{Index} + \text{Offset} = 32 \text{ bits} \]
Substituting the known values:
\[ \text{Tag} = 32 - 0 - 4 = 28 \text{ bits} \]
Step 6: Final result.
The number of bits required for the tag and index fields are:
\[ \boxed{28 \text{ bits and } 0 \text{ bits}} \]