Generally speaking, you can directly initialize registers because they are
memory mapped. Hence you assign a value to a variable and the corresponding bit pattern is set into the target register (and viceversa in a read operation).
Quote:
and again the other way is providing bit values to the registers
I don't get you on this: What is the 'other way', exactly?