Microcontroller (lpc1347) RMW operation
There is no single method to be used; it all depends on your application.  If you want to set a value directly and previous value is not useful, you assign directly because it is faster.

You need to do RMW when you want to preserve part of the previous value.  Say you have a 32 bits register where each bit is state of a GPIO (output 1 or 0).  If you want to modify only bit 0 you will use RMW such as:

PORTX |= 0x00000001; // Set bit 0.
PORTX &amp;= 0x00000001; // Clear all but bit 0.
PORTX &amp;= ~0x00000001; // Clear bit 0, but keep others.
PORTX ^= 0x00000001; // Toggle state of bit 0 whatever it is.


As you can see, using RMW, you can keep previous state of other bits if you want.  Therefore if if you to create different independent modules, you can use RMW to modify your bits without have to care about the state of bits being set by other modules in your code.  Using RMW is a little bit slower than direct assignment, though.

Now, some CPUs integrate special registers to perform so kind of RMW without actually having to read the registers such as with your chip.  The "NOT" is because your chip has a special register whose purpose is to clear bits that you set.  While this is common on ARM microcontrollers, it is not the case with every microcontroller.  Such special registers allow to perform a hardware RMW, so that there is no performance penalty like with software RMW.  Lower end microcontroller do not integrate such feature because it requires more transistors and complexity on the chip's hardware driving cost higher.

To answer your question directly: both are RMW.  One is software implemented (first) and the other is hardware implemented.  You should use hardware whenever possible.  On your chip this is available.  On lower end hardware you would have to use the software technique.