This is a common question for a new C or other language programmer. To know why I guess you could find books on the history of C and how it came to be. But it's mostly historic and you can code as you see fit. However, it is best to not fight the tide this time and learn how to code using the standard calls and accept that arrays and more start at zero.
This can be considered arcana today by some. Let's say you are programming on an average PC today. Not much reason to encode data into bit fields. Just use variables to clearly state what you mean. In embedded programming bit fields are not going away. Some will open a debate on this. I think this quote applies here.
This has made a lot of people very angry and been widely regarded as a bad move.