У меня вопрос к вам, ребята, который сводит меня с ума уже 2 дня.Может быть, потому, что я скучаю по основам сдвига битов, но почему-то мне это не приходит в голову.То, что я хочу, - это простая программа, которая читает 3 символа или uint8_t, сохраняет их в одно большое целое, а затем снова читает его.
Впервые я экспериментирую со сдвигом битов и почему-то застрял.
Это код:
int main (int argc, const char * argv[])
{
u_int8_t insert1;
u_int8_t insert2;
u_int8_t insert3;
int data;
printf("Please enter value1: ");
scanf("%d", &insert1);
printf("Please enter value2: ");
scanf("%d", &insert2);
printf("Please enter value3: ");
scanf("%d", &insert3);
data |= insert3<<16 | insert2<<8 | insert1;
printf("\nValue1: %d\n", data);
printf("Value2: %d\n", data>>8);
printf("Value3: %d\n", data>>16);
return 0;
}
Когда я ввожу
126 103 255
Я получаю:
Значение1: 16711680Значение 2: 65280 Значение 3: 255
Что совершенно неверно.Я почти уверен, что значение правильно хранится в данных, но я не знаю, как их прочитать.
Большое спасибо: -)