Форум программистов, компьютерный форум CyberForum.ru

Функция циклического сдвига побитово вправо - C++

Восстановить пароль Регистрация
 
h_wolf
 Аватар для h_wolf
9 / 9 / 1
Регистрация: 24.01.2013
Сообщений: 211
06.08.2013, 10:38     Функция циклического сдвига побитово вправо #1
Форумчане, приветствую!
Подскажите почему не работает сдвиг вправо?
Программа компилируется, но сдвига не происходит. Сверился с ответами в учебнике вроде все так.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
unsigned char rrotate(unsigned char val, int n)
{
    unsigned int t;
    t=val;
 
    t=t<<8;
 
    for(int i=0; i<n; i++)
    {
        t>>1;
        if(t&128) t=t|32768;
    }
    t=t>>8;
    return t;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.08.2013, 10:38     Функция циклического сдвига побитово вправо
Посмотрите здесь:

программа циклического сдвига числа C++
Программа циклического сдвига элементов массива C++
Написать программы шифрования и расшифровки файла методом циклического сдвига C++
Реализовать функции шифровки и дешифровки методом циклического сдвига битов C++
C++ Как закодировать методом циклического сдвига?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,340
06.08.2013, 10:48     Функция циклического сдвига побитово вправо #2
h_wolf, в char 8 бит. t=t<<8; - сдвиг на 8 бит. В итоге получаешь 0.
h_wolf
 Аватар для h_wolf
9 / 9 / 1
Регистрация: 24.01.2013
Сообщений: 211
06.08.2013, 11:17  [ТС]     Функция циклического сдвига побитово вправо #3
nonedark2008, да, если сдвигать в седьмой строке на 7 бит все работает. Видимо не до конца разобрался, на бумаге все получалось правильно.

Добавлено через 3 минуты
nonedark2008, эээ... погодите. Но ведь мы вносим 8ми битное слово в unsigned int (32bit ширина), соответственно сдвиг влево на 8 бит справедлив и выносит char слово во второй байт, откуда после сдвига возвращается в 14 строке. Или я что-то не правильно понимаю.
nonedark2008
624 / 502 / 92
Регистрация: 28.07.2012
Сообщений: 1,340
06.08.2013, 11:47     Функция циклического сдвига побитово вправо #4
h_wolf, хех. Упс, облажался. >_>
Скопировал код в компилятор, он мне сразу и выдал:
Цитата Сообщение от h_wolf Посмотреть сообщение
t>>1;
- бессмысленная операция.
Должно быть t >>= 1;
h_wolf
 Аватар для h_wolf
9 / 9 / 1
Регистрация: 24.01.2013
Сообщений: 211
06.08.2013, 11:56  [ТС]     Функция циклического сдвига побитово вправо #5
Глаза яйца. Все работает. Спасибо за ответы!
Yandex
Объявления
06.08.2013, 11:56     Функция циклического сдвига побитово вправо
Ответ Создать тему
Опции темы

Текущее время: 01:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru