16-битный сдвиг ствола в Java

Я пытаюсь сделать поворот вправо (сдвиг ствола) на int в Java, например.

Input:  0000 0000 0110 1001
Output: 1000 0000 0011 0100

Я знаю, что могу сделать правый сдвиг (>>), однако я не могу понять, как объединить это, чтобы создать поворот (я почти уверен, что это возможно!).

Я думаю, что в java.lang.Math есть метод, но я пытаюсь понять, как использовать только смены.

Любые идеи?


person Fred    schedule 01.03.2011    source источник
comment
@Jason: Верно ... даже два раза творят чудеса!   -  person John    schedule 02.03.2011


Ответы (2)


Я не уверен, что для этого есть одна операция. Но что-то вроде:

int x = (x >> 1) | (x << 31)  // or 15 if you really did mean 16-bit

бы сделать свое дело.

person dty    schedule 01.03.2011
comment
Название вопроса - 16-битное вращение, я думаю, вы слишком далеко заходите с переносом :-) - person Mat; 02.03.2011
comment
Да, 16-бит и int на самом деле не сочетаются в этом вопросе. Я добавил комментарий. - person dty; 02.03.2011
comment
Но вы загрязняете старшие 16 бит (ну, некоторые из них) только ‹‹15. Хотя, наверное, не важно. - person Mat; 02.03.2011
comment
Я думаю, что ОП, вероятно, хочет 32-битную операцию, но в остальном вы абсолютно правы. Либо ваша техника, либо выполнение последнего & 0xFFFF сработает. - person dty; 02.03.2011
comment
Я имел в виду 16-битный, поэтому я добавлю & 0xFFFF, спасибо за ваши ответы! :) - person Fred; 02.03.2011
comment
Ради интереса я только что обнаружил Integer.rotateRight() и Integer.rotateLeft(). Я никогда не знал, что они существуют! Конечно, они работают с 32-битными числами, а не с 16-битными. - person dty; 04.03.2011
comment
Есть оператор ›››, который заполняет нулями (вместо использования & 0xFFFF). - person karmakaze; 09.03.2012

person    schedule
comment
Поскольку вы используете &, я уверен, что вы гарантированно получите 0 из этого, независимо от ввода! - person dty; 02.03.2011
comment
Я понятия не имею, как вы отредактировали свой пост, чтобы он не отображался как редактирование... :-) - person dty; 02.03.2011
comment
Тоже без понятия. Может быть, редактирование одного символа не отслеживается (опустошение редактирования?) ;-) - person Mat; 02.03.2011