This may be a very basic thing that I didn't understand. But I put a lot of effort one this to find the answer, but no good.
In byte-addressable machines, by using 32-bit we can access 4GB of memory(2^32 bytes). Then each word contains 4bytes, in virtual to physical mapping we have virtual to physical word mapping which includes 4bytes. So my question is if we have char variable (char: 1byte) how we can know which byte contains is out of 4 bytes?
Virtual to physical mapping only change the upper part of the virtual address (a.k.a. virtual page number, VPN) into the upper part of the physical address (a.k.a page frame number, PFN, or physical page number, PPN).
The lower part (a.k.a. offset) remains the same, if this part is k bits wide, then it span 2k bytes that all share the same translation.
That's why we say that mapping happens at, say, 4KiB/2MiB/1GiB boundary.
If memory is byte addressable, each byte is identified by (at least) one unique address by definition.
So it is easy for the hardware to access that specific byte in memory.
Each address goes under the virtual translation as outlined above.