Каков результат следующей операции сдвига битов:
((((uint32) 0x0) << 6U) | (((uint32) 0x2) << 4U) | (((uint32) 0x0) << 2U) | (((uint32) 0x1) << 0U))
Я ожидал бы:
0 | 32 | 0 | 1 = 33 десятичных числа
Этоправильно или я совершенно не прав?
Вы можете запустить код и убедиться в этом сами. Позвольте мне написать для вас заявление printf.
printf
#include <stdio.h> #include <stdint.h> int main (void) { printf("%u\n", (((uint32_t) 0x0) << 6U) | (((uint32_t) 0x2) << 4U) | (((uint32_t) 0x0) << 2U) | (((uint32_t) 0x1) << 0U) ); }