круговой сдвиг с - PullRequest
       11

круговой сдвиг с

1 голос
/ 31 мая 2010

Мне нужно сдвинуть int на одно место вправо и вернуть его

В Java я могу просто вернуть n >> 1;

Возможно ли это в C?

Метод, который нам дали, следующий:

// Return n after a right circular 1-bit shift
unsigned int right_circular_shift_1(unsigned int n) {

Ответы [ 2 ]

10 голосов
/ 31 мая 2010

C не имеет кругового сдвига, поэтому я предполагаю, что упражнение заключается в его реализации. Способ сделать это для левого кругового сдвига:

- get the current leftmost bit  and save it
- shift the number leftwards by one
- or the saved bit in at the rightmost bit position

Для правого кругового сдвига:

- get the current rightmost bit  and save it
- shift the number rightwards by one
- or the saved bit in at the leftmost bit position
5 голосов
/ 31 мая 2010

Разве вы не пробовали это?

n >> 1

Это будет работать в C (и других языках на основе C) так же, как и в Java (не круговой).

...