1. A method of storing data in a computer system memory, comprising: receiving a data word having a plurality of consecutive data bits; determining a first error correction code for a first sub-word of the data word, the first sub-word including a first subset of the data bits of the data word, the first subset comprising alternate data bits of the data word, the first error correction code including a plurality of check bits and being determined based on all of the data bits of the first sub-word; determining a second error correction code for a second sub-word of the data word, the second sub-word including a second subset of the data bits of the data word, the second subset comprising alternate data bits of the data word that are interleaved with the data bits included in the first subset, the second error correction code including a plurality of check bits and being determined based on all of the data bits of the second sub-word; entering and storing the data word and the first and second error correction codes in the memory; retrieving the data word and the first and second error correction codes from the memory; determining from the first error correction code which of the data bits of the first sub-word was altered in error, if any, between entering the data word in the memory and retrieving the data word from the memory; if a data bit of the first sub-word is determined to have been altered in error, then correcting the data bit; determining from the second error correction code which of the data bits of the second sub-word was altered in error between entering the data word in the memory and retrieving the data word from the memory; and if a data bit of the second sub-word is determined to have been altered in error, then correcting the data bit.