Method of data management for a bitwise programmable resistive non-volatile memory, comprising storing new data (NewDat) at a memory location (Loc) of a memory word, said storing comprising: - a sensing step comprising sensing former data (FormDat) stored in the memory location; - a decision step comprising: -- computing a first quantification of a first burst of bitwise programming operations corresponding to the bits of the new data (NewDat) respectively different than the bits of the former data (FormDat), -- computing a second quantification of a second burst of bitwise programming operations corresponding to the bits of a complementary inversion of the new data (Compl.NewDat), respectively different than the bits of the former data (FormDat), -- testing whether the first quantification is strictly higher than the second quantification; and - a programming step comprising, if the test of the decision step is true, bitwise programming the bits of the complementary inversion of the new data (Compl.NewDat) respectively different than the bits of the former data (FormDat), and programming or keeping an inversion flag (InvFlg) dedicated to the memory word at a flagged value, characterised in that the method is further comprising: when the memory location size (Loc) is smaller than the memory word size and when the inversion flag (InvFlg) dedicated to the memory word has to be programmed, computing the first quantification and the second quantification takes into account the programming operations for inverting of all the other bits belonging to the memory word outside of the memory location (Loc); and the programming step comprises programming all these other bits at their complementary inverted state. - a sensing step comprising sensing former data (FormDat) stored in the memory location; - a decision step comprising: -- computing a first quantification of a first burst of bitwise programming operations corresponding to the bits of the new data (NewDat) respectively different than the bits of the former data (FormDat), -- computing a second quantification of a second burst of bitwise programming operations corresponding to the bits of a complementary inversion of the new data (Compl.NewDat), respectively different than the bits of the former data (FormDat), -- testing whether the first quantification is strictly higher than the second quantification; and - a programming step comprising, if the test of the decision step is true, bitwise programming the bits of the complementary inversion of the new data (Compl.NewDat) respectively different than the bits of the former data (FormDat), and programming or keeping an inversion flag (InvFlg) dedicated to the memory word at a flagged value, -- computing a first quantification of a first burst of bitwise programming operations corresponding to the bits of the new data (NewDat) respectively different than the bits of the former data (FormDat), -- computing a second quantification of a second burst of bitwise programming operations corresponding to the bits of a complementary inversion of the new data (Compl.NewDat), respectively different than the bits of the former data (FormDat), -- testing whether the first quantification is strictly higher than the second quantification; and - a programming step comprising, if the test of the decision step is true, bitwise programming the bits of the complementary inversion of the new data (Compl.NewDat) respectively different than the bits of the former data (FormDat), and programming or keeping an inversion flag (InvFlg) dedicated to the memory word at a flagged value,