sellonoid:
I read that all 8 bit binary numbers had been explicitly defined in Arduino and was surprised that they were not "natively" supported in C/C++. But I have a question. I just tried this: int x = B01001100; and the compiler didn't complain. Then I tried adding 8 more bits and it squawked. I guess that makes sense if only the first 256 binary numbers are defined, but doesn't it take 16 bits to be an integer type? Does this mean you can access only the low byte in an integer using binary?
Try using the 0b syntax that is built into gcc, e.g. int x = 0b10101010101010
The microcontroller itself works in binary and has not problems using 16bit binary numbers - in fact all decimal and hex numbers are converted to binary anyway. The problem is just telling the compiler that the number you have written should be treated as if it is already in binary and that is what is missing from the C specification.
When you try and save an 8 bit number to a 16bit int, the microcontroller simply assumes the upper 8 bits are all zero (unsigned) or all one (both are signed and the 8bit number is negative).