You can write integer values in hexadecimal form to base 16. The digits in a hexadecimal number are the equivalent of decimal values 0 to 15, and they are represented by 0 through 9 and A though F (or a through f). Because there needs to be a way to distinguish between 9910 and 9916, hexadecimal numbers are written with the prefix 0x or 0X. You would therefore write 9916 in your program as 0x99 or as 0X99. Hexadecimal constants can also have a suffix.
Here are some examples of hexadecimal constants:
0xFFFF 0xdead 0xfade 0xFade 0x123456EE 0xafL 0xFABABULL
An octal value is a number to base 8. Each octal digit has a value from 0 to 7, which corresponds to three bits in binary.
Octal values originate from the days long ago when
computer memory was in terms of 36-bit words, so a word was a multiple of three bits. Thus, a 36-bit binary word could be written as 12 octal digits.
Octal constants[1] are rarely used these days, but you need to be aware of them so you do not specify an octal constant by mistake. An integer constant that starts with a zero, such as 014, will be interpreted by your compiler as an octal number.
Thus, 014 is the octal equivalent of the decimal value 12. If you meant it to be the decimal value 14, it is obviously wrong, so do not put a leading zero in your integers unless you really want to specify an octal value.
There is rarely a need to use octal values.