This is the mistake in thinking. In C++ there is a difference between 14, 0x14, and 014 (yes, the leading 0 makes a difference). The first is a decimal constant, the second a hexidecimal constant, the 3rd an octal constant. All three are different numbers.
0x10 + 0x4 is not 14, it is 0x14. 14 is equal to 0xE, and 0x14 is equal to 20.
How do you really set a register with this table ?
The best way it to do what I showed you, use #define to give names to the constants and either add (+) or bitwise-or (|) them together.
for example, whats the effect of 14 ? first or second ?
It's a problem of you not thinking in hex Hex is not a variable type, it's just a way o represent a value. Like in languages one, un, Uno, ein, één etc mean the same thing in different languages. The 0x in front tells the compiler (and you) it's hex. And hex does not roll over after 9 It rolls over after F. So 0x8 + 0x4 = 0xC and 0xC + 0x2 = 0x8 + 0x4 + 0x = 0xE, not 0x14