The general procedure for a direct mapped cache is to first determine the bits of the offset, then determine the bits of the index (the address's next-to-right-most bits), and finally the tag is all that is left.
The offset would be 1, the index would be 001, and the tag would be 0000 0000 0000 0000 0000 for the word address 3 (0000 0000 0000 0000 0000 0000 0000 0011).
Block of 2 words equals 1 bit of offset (21).
3 bits for the index (23) for 8 blocks in the cache.
28 bits for the tag.
hence, in part (a) Since 20=1, you just need 0 offset bits because the block size is 1 word. Since there are 16 blocks, 4 index bits are required to provide 16 distinct indices (since 24=16). You are now left with the tag's final 28 bits. You appear to have answered this mainly correctly (except for the rows for "180" and "43" where you seem to have missed a few bits, and the row for "181" where you interchanged some bits when converting to binary, I think). That everything is a miss is true.
The block size for portion (b) is two words, hence you only need one offset bit (because 21=2). Because 23=8, you need 3 index bits to provide 8 alternative row indices if you have 8 blocks. You are now left with the tag's final 28 bits. Again, with the exception of the rows for "180," "43," and "181," you got it mostly right. (Which subsequently modifies a few of the hits and misses.)
Know more about bits here:
https://brainly.com/question/2545808
#SPJ4