Я сканировал сторонний исходный код с помощью Findbugs (просто чтобы быть осторожным, прежде чем интегрировать в него свой) и обнаружил следующее предупреждение:
long a = b << 32 | c
Ошибка: целочисленный сдвиг на 32. Идентификатор шаблона: ICAST_BAD_SHIFT_AMOUNT, тип: BSHIFT, категория: ПРАВИЛЬНОСТЬ.
Код выполняет целочисленный сдвиг на постоянную величину за пределами диапазона 0..31. Результатом этого является использование младших 5 битов целочисленного значения, чтобы решить, на сколько сдвигать. Это, вероятно, не то, что ожидалось, и это, по крайней мере, сбивает с толку.
Может ли кто-нибудь объяснить, что именно означает вышеизложенное?
Спасибо! (Я совсем новичок в программировании на Java)