Bitshifting from one variable to another?

Hi,
My friend is working on a project that measures how many times an event occurs. He has nearly overflowed an unsigned long variable and I'm wondering if its possible to bitshift it into another unsigned long to increase the size of the variable?

Or would he be better off resetting the unsigned long at 4 billion and use another int variable to count how many times he has reset it?

The plan is to be able to display a number considerably larger than the ~4.29 billion an unsigned int can hold.

uint64_t?

Consider using BigNumber library for Arduino devices.