Because of their binary nature, MTJs are used in memory cells to store digital data, with the low resistance state RP corresponding to a first data state (e.g., logical “0”), and the high-resistance state RAP corresponding to a second data state (e.g., logical “1”). To read data from such an MTJ memory cell, the MTJ's resistance RMTJ (which can vary between RP and RAP, depending on the data state that is stored) can be compared to a reference cell's resistance, RRef (where RRef, for example, is designed to be in between RP and RAP, for instance, an average). In some techniques, a given read voltage VRead is applied to the MTJ memory cell and the reference cell. This read voltage results in a read current flowing through the MTJ (IMTJ) and a reference current flowing through the reference cell (IRef). If the MTJ is in a parallel state, the read current IMTJ has a first value (IMTJ-P) greater than IRef; while if the MTJ is in an anti-parallel state, the read current IMTJ has a second value (IMTJ-AP) that is less than IRef. Thus, during a read operation, if IMTJ is greater than IRef, then a first digital value (e.g., “0”) is read from the MTJ cell. On the other hand, if IMTJ is less than IRef for the read operation, then a second digital value (e.g., “1”) is read from the MTJ cell.