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

реализация ROR и ROL для int - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Шаблон класса в качестве параметра другому шаблону http://www.cyberforum.ru/cpp-beginners/thread766474.html
Почему у меня не получается сделать так: template <typename T> class A { // .... }; vector<A> Vec;
C++ Массив: вывести индексы тех элементов, для которых исполняется условие C[i][j]= C[j][i] Есть двухмерный масив (матрица) розмером nxn вывести индексы тех елементов для которых исполняется условие C= C. Помогите плиз, немогу нечего сделать. http://www.cyberforum.ru/cpp-beginners/thread766473.html
Динамические структуры данных C++
Проблему решил. все дело было в волшебной строчке On Error Resume Next, которая затерялась в дебрях скрипта :)
C++ Классы / Структуры и русский язык
Вобщем у меня такой баг вылазиет незнаю как побороть... Подскажите в чём грабли, и как решить. Если создаю массив обьектов то начиная со второго обьекта в класс / структуру пишется ерунда. У первого обьекта всё вроде норм, во втором в некоторых переменных нормально в некоторых смешиваются строки... Вот например . #include <iostream> #include <cstring> using namespace std;
C++ Взаимодействие с другой программой http://www.cyberforum.ru/cpp-beginners/thread766439.html
Всем добрый вечер! Подскажите пожалуйста как реализуется взаимодействие с другой программой! Посмотрев поиск нашёл несколько тем на эту тему, но там windows и окна... У меня же linux, debian и обычный демон висящий в фоне и не имеющий никаких графических окон. Интересует запуск, передача данных, и получение ответа. Есть конечно system но он каждый раз будет запускать демона и тем самым...
C++ Ключ в хэш-таблице Здравствуйте ! Помогите решить две задачи: 1. Поиск ключа в хэш-таблице с цепочками 2. Вставка ключа в хэш-таблицу с цепочками подробнее

Показать сообщение отдельно
ValeryS
Модератор
6376 / 4842 / 442
Регистрация: 14.02.2011
Сообщений: 16,045
20.01.2013, 02:21     реализация ROR и ROL для int
Цитата Сообщение от Toshkarik Посмотреть сообщение
Ничего не мешает,
сдвиг вправо ( а в нем вся загвоздка ) это деление на 2
т.е. число -2(1111 1110)/2(>>1)=-1(1111 1111)
знаковый бит обязан копироваться

Цитата Сообщение от Toshkarik Посмотреть сообщение
Некоторые машины заполняют старшие биты нулями, другие используют
проверял на куче процессоров и микроконтроллеров везде копируется для int
а для unsigned int да заполняется 0
потому что число
254(1111 1110)/2(>>1)=127(0111 111)

у ассемблера есть две команды логический сдвиг( заполняется 0) и арифметический сдвиг ( копируется старший знаковый бит)

Добавлено через 11 минут
Цитата Сообщение от V_Ghost Посмотреть сообщение
Скажите пжл, как такое возможно, что при 4 битах и максимальном числе 16 оно мне выдало результат 85 ?
нет невозможно это я накосячил (не умножил на количество бит размер int)
вот правильный вариант
C++
1
2
3
4
5
6
7
8
9
unsigned int ROR(unsigned int n,int q)
{
return (n>>q)|(n<<(sizeof(int)*8-q));
}
 
unsigned int ROL(unsigned int n,int q)
{
return (n<<q)|(n>>(sizeof(int)*8-q));
}
Цитата Сообщение от V_Ghost Посмотреть сообщение
при 4 битах и максимальном числе 16
я тебе дал реализацию для int (32 бита)как ты и просил
ни о каких 4 битах речи не было
могу написать для char( 8 бит)
а 4 бита это полубайт нигде не используется
можешь конечно написать
C++
1
2
3
4
unsigned int ROR(unsigned int n,int q)
{
return (n>>q)|(n<<(4-q));
}
Добавлено через 3 минуты
общая функция ( для любого размера )
может выглядеть так
C++
1
2
3
4
5
6
unsigned int ROR(unsigned int n,int q, int size)
{
int m=n&((1<<size)-1)
 
return ((m>>q)|(m<<(size-q)))&((1<<size)-1);
}
 
Текущее время: 14:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru