An element of a bit field will never overlap two memory βunitsβ (in your case, a memory block is an element with 64 bits).
Besides the fact that the implementation of the bit field depends on the compiler, there is every chance that your bit field structure is actually stored in memory as follows:
struct { uint64_t a:30; uint64_t b:30; uint64_t :4; uint64_t c:30; uint64_t d:30; uint64_t :4; uint64_t e:8; uint64_t :56; }x;
greydet
source share