C++について質問させて下さい。
C++で書かれたBlowfishの実装を眺めていたら下記のようなコードに出くわしました。

union aword {
 unsigned long dword;
 unsigned char byte[4];
 struct {
  unsigned int byte3:8;
  unsigned int byte2:8;
  unsigned int byte1:8;
  unsigned int byte0:8;
 } w;
};

この、unsigned int byte3:8;の末尾にある、:8というのはどのような意味なのでしょうか?
多分、下位(あるいは上位)8ビットを使用する、というような意味だとおもうのですが、
だとしたらunsigned char byte3というような定義と違いが無いとおもうのです。
無論、charが8ビットであるという前提において、ですが。

このような定義をしているということは、自分の考えが間違っているとおもうので
その辺りを教えていただけませんでしょうか。