Добрый день!
unsigned long total = 0; //32bit
unsigned int part1 = 0xAABB; //16bit
unsigned int part2 = 0xCCDD; //16bit
total = ((part1 << 16) + part2);
Результат получается total = 0x0000CCDD;
При компиляции выдает сообщение, что слишком большой сдвиг. Если вместо 16 поставить 8, все нормально.
Почему не выходит сдвинуть больше 8-ми разрядов?