Could someone explain this code for me please...

I found this while looking through the blowfish encryption algorithm, I am looking for techniques for my own and I dont quite understand this portion:

Code:

`struct WordByte`

{

unsigned int three:8;

unsigned int two:8;

unsigned int one:8;

unsigned int zero:8;

};

union Word

{

unsigned int word;

WordByte byte;

};

I know that the union type Word can be accessed as a WordByte, and i take it that its somehow organized from 4 bytes with 8 bits each? how do these numbers relate? sorry I blanked.