Reference Language (extended) | Libraries | Comparison
Integer constants are the numbers you type directly into your sketch, like 123
. Normally, these numbers are treated as base 10 (decimal) integers, but you can use special notation (formatters) to enter numbers in other bases.
Base Example Formatter Comment 10 (decimal) 123 none 2 (binary) B1111011 capital 'B' only works with 8 bit values characters 0-1 valid 8 (octal) 0173 leading zero characters 0-7 valid 16 (hexadecimal) 0x7B leading 0x characters 0-9, A-F, a-f valid
Decimal is base 10, this is the common-sense math with which you are aquainted.
Example: 101 == 101 decimal ((1 * 10^2) + (0 * 10^1) + 1)
Binary is base two. Only characters 0 and 1 are valid.
Example: B101 == 5 decimal ((1 * 2^2) + (0 * 2^1) + 1)
The binary formatter only works on bytes (8 bits) between 0 (B0) and 255 (B11111111). If it's convenient to input an int (16 bits) in binary form you can do it a two-step procedure such as this:
myInt = (B11001100 * 256) + B10101010; // B11001100 is the high byte
Octal is base eight. Only characters 0 through 7 are valid.
Example: 0101 == 65 decimal ((1 * 8^2) + (0 * 8^1) + 1)
You can generate a hard-to-find bug by (unintentionally) including a leading zero before a constant and having the compiler unintentionally interpret your constant as octal
Hexadecimal (or hex) is base sixteen. Valid characters are 0 through 9 and letters A through F; A
has the value 10, B
is 11, up to F
, which is 15.
Example: 0x101 == 257 decimal ((1 * 16^2) + (0 * 16^1) + 1)
An integer constant may be followed by:
Corrections, suggestions, and new documentation should be posted to the Forum.
The text of the Arduino reference is licensed under a Creative Commons Attribution-ShareAlike 3.0 License. Code samples in the reference are released into the public domain.