С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
kaig
0 / 0 / 0
Регистрация: 22.01.2013
Сообщений: 23
#1

Перестановка битов в двоичном числе - C++

18.11.2015, 10:12. Просмотров 563. Ответов 2
Метки нет (Все метки)

Добрый день! Подскажите, пожалуйста, как правильно перемешать битовую последовательность, которая задается с клавиатуры, так, чтобы количество исходных битов в 32х разрядном числе совпало с количеством битов в 32х разрядном перемешанном числе?
Например, есть число
1001001
перемешиваем биты, получаем:
0100011
Т.е было у на три единицы, столько же их и осталось. Аналогия с колодой карт.
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
#define bits 32
#define mixing 32
int main()
{
    setlocale(LC_ALL,"Rus");
    int n;
    printf("%s","Введите десятичное число: ");
    cin >> n;
    int i = bits; 
 
    printf ("%s", "Число в двоичном виде: ");
    while(i > 0)
    {
        printf("%u", (n >> --i) & 1);
    }
    printf("\n");
 
    printf("%s","Перемешанное число: ");
    int j = mixing;
    while(j > 0)
    {
        // Алгоритм перемешивания битов (инвертирование запрещено!)
    }
    _getch();
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.11.2015, 10:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перестановка битов в двоичном числе (C++):

Перестановка битов - C++
Помогите пожалуйста в файле задание

Произвести в двоичном представлении числа обмен битов с заданными номерами - C++
Дано короткое целое неотрицательное число. Произвести в его двоичном представлении обмен битов с номерами 0 и 1, 2 и 3, 4 и 5 и т.д. ...

Перестановка байтов в двоичном файле - C++
Здравствуйте! Подскажите пожалуйста, как сделать перестановку байтов в двоичном файле?=(

Узнать количество битов, что равны нулю в двоичном представлении значения числа - C++
Написать програму в которой необходимо узнать количество битов что равны нулю в двоичном представлен ии значения А С++ Помогите

Написать программу в которой необходимо определить каких битов больше в двоичном представлении целого значения - C++
Написать програму в которой необходимо определить каких битов (0 или 1) больше в двоичном представлении определенного целого значения А. ...

Подсчёт битов в числе равных 1. - C++
День добрый. Подскажите, как написать программку, которая принимает с клавиатуры любое значение типа int и потом должна подсчитать...

2
John Prick
824 / 757 / 152
Регистрация: 27.07.2012
Сообщений: 2,156
Завершенные тесты: 3
18.11.2015, 10:18 #2
Сложи биты числа в какой-нибудь контейнер и воспользуйся std::random_shuffle.
0
kaig
0 / 0 / 0
Регистрация: 22.01.2013
Сообщений: 23
18.11.2015, 10:30  [ТС] #3
Нужен собственный алгоритм.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.11.2015, 10:30
Привет! Вот еще темы с ответами:

Заменить в числе a v битов, начиная с n-й позиции - C++
Добрый вечер, уважаемые форумчане, подскажите пожалуйста решение сей задачи Заменить в числе a v битов, начиная с n-й позиции, на n...

Рандомное изменение двух последних цифр в двоичном числе - C++
Здраствуйте, возник следующий неразрешимый вопрос. Есть двоичное число: 1111111 11 - нужно что бы две последних цифры рандомно изменялись...

Поменять местами все соседние группы из двух битов в заданом беззнаковом длинном числе - C++
Задача. Испольхуя только битовые операции, написать программу, которая меняет местами все соседние групы с 2х битов в заданом беззнаковом...

Написать функцию, которая для заданного x посчитает количество единичных битов в этом числе. - C++
Написать функцию, которая для заданного x посчитает количество единичных битов в этом числе. Проблема состоит в том, что все время...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.