so I am conceptually trying to create a union of a 64 bit number with an array of (4 bit) nibbles, but I cannot seem to get it properly aligned on my UNO:
You really want to find the border of the 'c' language and the compiler ???
Make the constant: 0x0123456789ABCDEFULL, then you see.
What happens if you do sizeof(Nibble) ? Do you expect that to be 0.5 bytes in size ? No, it is one byte in size.
The problem is not the bit fields, but the struct. The struct is placed at a byte boundery. That is why the size is 16 bytes instead of 8 bytes.
As far as I know, it is not possible to make an array of a bitfield variable.
At this moment I don't have a solution for an array of nibbles in a struct or union.
It is possible without array, but that is not helping.
struct MyNibbles
{
unsigned int n0 :4;
unsigned int n1 :4;
unsigned int n2 :4;
unsigned int n3 :4;
unsigned int n4 :4;
unsigned int n5 :4;
unsigned int n6 :4;
unsigned int n7 :4;
unsigned int n8 :4;
unsigned int n9 :4;
unsigned int n10 :4;
unsigned int n11 :4;
unsigned int n12 :4;
unsigned int n13 :4;
unsigned int n14 :4;
unsigned int n15 :4;
};