Не собирается long из байт
- Войдите на сайт для отправки комментариев
Ср, 03/07/2019 - 19:10
Здравствуйте.
Не могу понять, почему у меня не собирается число unsigned long из байт. Например число 600000 разбивается на 192 39 9 0
Потом я собираю его обратно 192 | 39<<8 | 9 << 16 | 0 << 24 и получаю
192
10176
10176
10176
Контроллер atmega32u4. В чем может быть проблема?
Код на бочку. Ставлю на сдвиг битов в несуществующие разряды
Потом я собираю его обратно 192 | 39<<8 | 9 << 16 | 0 << 24 и получаю
по умолчанию все ваши вычисления производятся в типе int, поэтому два верхних байта просто пропадают.
Пропишите в явном виде, что все это - long - и все получится
Потом я собираю его обратно 192 | 39<<8 | 9 << 16 | 0 << 24 и получаю
по умолчанию все ваши вычисления производятся в типе int, поэтому два верхних байта просто пропадают.
Пропишите в явном виде, что все это - long - и все получится
Да, получилось. Спасибо
Хотя я явно прописывал long a = 192 | 39<<8 | 9 << 16 | 0 << 24
"long a = 192 | 39<<8 | 9 << 16 | 0 << 24" предписывает компилятору расширить все операторы, участвующие в битшифтинге до int, произвести все операции и только после этого поместить результат в переменную типа long.
Никак не разберусь с битовыми операциями
long a = 192 | 39<<8 | 9ul << 16 | 0 << 24