HELP me saving the odometer reading into EEPROM

If you mask a value with another value, the only bits that will remain are those that are true (1) in both values.

So:
unsigned long val = 0x3456;

unsigned long mask = 0xF000;

unsigned long masked = val & mask;

will result in masked being 0x3000. Now, if you shift ( >> ) this 8 times to the right, you get 0x0300. If you shifted 16 times, instead, you'd get 0x0030. If you shifted 24 times, instead, you'd get 0x0003.

If you store this last value in a byte, you get the same value as the 1st byte of the long.

If you use a mask of 0x0F00 and shift 16 times, you get the 2nd byte of the long.

If you use a mask of 0x00F0 and shift 8 times, you get the 3rd byte of the long.

If you use a mask of 0x000F, you get the 4th byte of the long.

Putting the long back together is just as easy. Simply shift in the other direction ( << ).

Search for VirtualWire posts, where people want to send longs using virtual wire.