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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
h_wolf
 Аватар для h_wolf
9 / 9 / 1
Регистрация: 24.01.2013
Сообщений: 211
#1

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

06.08.2013, 10:38. Просмотров 689. Ответов 4
Метки нет (Все метки)

Форумчане, приветствую!
Подскажите почему не работает сдвиг вправо?
Программа компилируется, но сдвига не происходит. Сверился с ответами в учебнике вроде все так.

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++ Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево
C++ Ошиба циклического сдвига
Не хватает опыта для того, чтобы понять ошибку в задаче циклического побитового сдвига C++
C++ Запись в файл побитово потоком
Считывание числа побитово C++
Разработать класс строк, с функцией вывода, подсчетом длины и возможностью сдвига строки на 1 символ вправо C++
C++ Вывести результат последовательного применения циклического сдвига вправо заданной последовательности k раз
Шаблонная функция для побайтового сдвига C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nonedark2008
813 / 571 / 110
Регистрация: 28.07.2012
Сообщений: 1,522
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
813 / 571 / 110
Регистрация: 28.07.2012
Сообщений: 1,522
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     Функция циклического сдвига побитово вправо
Ответ Создать тему
Опции темы

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