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

Циклический сдвиг битов - C++

Восстановить пароль Регистрация
 
gEgyLLIka
0 / 0 / 0
Регистрация: 20.02.2011
Сообщений: 7
03.03.2014, 19:04     Циклический сдвиг битов #1
Создайте функцию, которая перемещает биты для unsigned int на заданное число битов влево, причем выходящие при сдвиге за левую границу переменной биты должны «вталкиваться» в переменную с правой стороны.
Прошу помощи. С++ ковырял года 4 назад,очень мало, что помню...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2014, 19:04     Циклический сдвиг битов
Посмотрите здесь:

C++ Циклический сдвиг битов 2
Циклический сдвиг C++
C++ циклический сдвиг
Циклический сдвиг битов! C++
Циклический сдвиг C++
C++ Циклический сдвиг
Циклический сдвиг битов в строке C++
Циклический сдвиг битов в байте C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MarVaL
С++ Beginner
 Аватар для MarVaL
116 / 116 / 16
Регистрация: 28.02.2013
Сообщений: 246
03.03.2014, 19:31     Циклический сдвиг битов #2
Для char:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>
#include <bitset>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "russian");
    
    
    cout << "Введите значение в двоичном виде: ";
    const int count_bits = sizeof(char) * 8;
    bitset<count_bits> setOfBits;
    cin >> setOfBits;
    
    cout << "Введите число сдвигаемых бит: ";
    unsigned int sbits;
    cin >> sbits;
 
    for(unsigned i = 0; i < sbits; ++i)
    {
        bool head_bit = setOfBits[count_bits - 1];
        setOfBits <<= 1;
        setOfBits[0] = head_bit;
    }
    
    cout << "Результат: " << setOfBits << endl; 
    
    return 0;
}
zss
Модератор
Эксперт С++
 Аватар для zss
5955 / 5560 / 1788
Регистрация: 18.12.2011
Сообщений: 14,209
Завершенные тесты: 1
03.03.2014, 19:34     Циклический сдвиг битов #3
C++
1
2
3
4
5
6
7
8
9
10
11
12
unsigned shiftleft(unsigned dat,int n)
{
    unsigned mask=0x80000000,t;
    for(int i=0;i<n;i++)
    {
        t=dat&mask;
        dat <<= 1;
        if(t)
           dat |= 1;
    }
    return dat;
}
Yandex
Объявления
03.03.2014, 19:34     Циклический сдвиг битов
Ответ Создать тему
Опции темы

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