Naruto128: result Monitor Serial :11111111111111111111111100000000 =6400
That binary should be 4294967040 in decimal.
All the rest is OK.
Please be aware, that C has a default data type of “int” for numbers without any modifier. And ‘int’ on 8-bit AVR controllers is a 16-bit signed value.
What you (perhaps) wanted to do is bitshifting with ‘unsigned long’ values.
If you take a 16 bit variable and shift all 16 bits like “255<<16” then you have shifted out all 16 bits and there are only 0 bits left. When doing afterwards a type casting from a 16-bit signed 0 to a 32-bit unsigne value, 0 stays 0.