Guardar un número en EEPROM de Arduino

Tengo entendido que en el Arduino UNO tiene 1 Kb de memoria EEPROM que va de la dirección 0 a la 999 y que pueden utilizar valores de 0 a 999 ¿pero como hago para que me guarde un valor entre 0 y 16,777,216 sin que se desborde?

EIVL14:
Tengo entendido que en el Arduino UNO tiene 1 Kb de memoria EEPROM que va de la dirección 0 a la 999

Ahí siempre se encuentra el mal uso de los prefijos decimales vs binarios.

1 KB = 1000 bytes; sin embargo estamos ante un sistema digital (y por ende, binario). Lo correcto sería decir "un kibibyte" (KiB); por lo tanto, 1 KiB = 2^10 = 1024 bytes.

En conclusión: la última dirección es 1023, no 999.

EIVL14:
y que pueden utilizar valores de 0 a 999 ¿pero como hago para que me guarde un valor entre 0 y 16,777,216 sin que se desborde?

Supongo que te refieres a un unsigned long, que puede llegar hasta (2^32) - 1 = 4,294,967,295. Para almacenarlo mínimo se necesitan apenas 4 de los 1024 bytes que tiene la EEPROM.

Y Yo usando indistintamente 1km como 1000 Metros y 1KB como 1024 Bytes.
Aqui la pagina con el resto de prefijos binarios.

Y para guardar variables tipo Long Aqui esta el enlace también esta por Aqui algo que te sirve para lo que preguntas.