Davon ausgehend dass du mit einem Bit genau 2 Byte adressieren kannst, kannst du mit 2 Bit 4 Byte adressieren.
00: erstes Byte
01: zweites Byte
10: drittes Byte
11: viertes Byte
Mit 3 Bit kannst du demnach bis zu 8 Byte adressieren, mit 4 Bit 16 Byte usw. Eigentlich alles nicht wirklich schwer...
Das was du mit Blöcken meinst, sind Bytewörter, dafür benötigst du natürlich 3 Bit. 32/4 Byte sind 8 Blöcke. 8 log 2 = 3 Bit um alle Bytewörter adressieren zu können. Du solltest demnach weitere 3 Bit in deiner Adresszeile haben um auch die Blöcke selektieren zu können. Wir reden hier aber von etwas anderem als von der direkten Byteadressierung, und das scheinst du zu verwechseln...
Sieh dir einfach mal den Adressaufbau von einem Direct Mapped Cache an, und du wirst sehen dass du beide Indexierungen benötigst. Ein mal um in das Wort zu gelangen, das andere Mal um das gewünschte Byte zu adressieren.
P.S. Dani: Dein eigener Kommentar unter deiner Frage ist absolut falsch. Lu hatte dir schon die richtige Antwort gegeben. Setze dich damit bitte auseinander!
Du hast weder verstanden dass 2 Bit 2^2 Möglichkeiten sind, geschweige denn, dass man in der Informatik beginnt bei Null zu zählen. Dafür dass es eine zweitsemester Vorlesung ist, würde ich mir mal ernsthafte Gedanken machen, was ein Stellenwertsystem ist, und was dies insbesondere im binären bedeutet. Ab dann werden Adressierungen zu Kinderspiel, und sind auf Paging, Segmentation, Swapping, usw ganz einfach übertragbar.
Ansonsten kann auch ich dir nur raten, die Fragen dort zu stellen, wo es 1. Leute gibt die sich damit auskennen, und 2. die technische Möglichkeit besteht dir auch gescheit zu antworten. Ich hoffe meine Antwort kann von Mods in deine Frage editiert werden.