Hi All, Can some body help me in understanding the differences between following 2 declarations?

1.

```
union u2
{
unsigned long urow2;
struct s2
{
unsigned int p32 : 1; unsigned int p31 : 1; unsigned int p30 : 1; unsigned int p29 : 1;
unsigned int p28 : 1; unsigned int p27 : 1; unsigned int p26 : 1; unsigned int p25 : 1;
unsigned int p24 : 1; unsigned int p23 : 1; unsigned int p22 : 1; unsigned int p21 : 1;
unsigned int p20 : 1; unsigned int p19 : 1; unsigned int p18 : 1; unsigned int p17 : 1;
unsigned int p16 : 1; unsigned int p15 : 1; unsigned int p14 : 1; unsigned int p13 : 1;
unsigned int p12 : 1; unsigned int p11 : 1; unsigned int p10 : 1; unsigned int p9 : 1;
unsigned int p8 : 1; unsigned int p7 : 1; unsigned int p6 : 1; unsigned int p5 : 1;
unsigned int p4 : 1; unsigned int p3 : 1; unsigned int p2 : 1; unsigned int p1 : 1;
}ss2;
}myunion2[16];
```

2.

```
union u2
{
unsigned long urow2[16];
struct s2
{
unsigned int p32 : 1; unsigned int p31 : 1; unsigned int p30 : 1; unsigned int p29 : 1;
unsigned int p28 : 1; unsigned int p27 : 1; unsigned int p26 : 1; unsigned int p25 : 1;
unsigned int p24 : 1; unsigned int p23 : 1; unsigned int p22 : 1; unsigned int p21 : 1;
unsigned int p20 : 1; unsigned int p19 : 1; unsigned int p18 : 1; unsigned int p17 : 1;
unsigned int p16 : 1; unsigned int p15 : 1; unsigned int p14 : 1; unsigned int p13 : 1;
unsigned int p12 : 1; unsigned int p11 : 1; unsigned int p10 : 1; unsigned int p9 : 1;
unsigned int p8 : 1; unsigned int p7 : 1; unsigned int p6 : 1; unsigned int p5 : 1;
unsigned int p4 : 1; unsigned int p3 : 1; unsigned int p2 : 1; unsigned int p1 : 1;
}ss2[16];
}myunion2;
```

Basically i want to initialize the unsigned int urow2 4-byte variable and then access each of its bits one by one. Which of the above 2 declarations is suitable for doing this?

Any help would be great.