int t;
x = ((t = (some_long_bitwise_expression)) << n |
(t) >>> (32 - n))
Конечно, вы можете сделать это запутывание, но оно не лучше, чем
int t = some_long_bitwise_expression;
x = (t << n) | (t >>> (32 - n));
, что намного понятнее.Кроме того, последнее выражение эквивалентно
x = (t << n) | (t >>> -n);
, поскольку расстояние сдвига берется по модулю 32 для целых чисел.Таким образом, вы можете написать
x = rotateLeft(some_long_bitwise_expression, n)
с вашим собственным методом поворота и иметь очень удобочитаемое выражение.Можно даже надеяться, что он будет оптимизирован с использованием инструкции сборки rotate, но это не так.Oracle JVM оптимизирует
x = Integer.rotateLeft(some_long_bitwise_expression, n)
, но не ваш собственный метод.