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

Шифрация битов - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Выход на биты в поразрядных операторах http://www.cyberforum.ru/cpp-beginners/thread633033.html
Здравствуйте. Обьясните пожалуйста есть код: #include <iostream.h> #include <conio.h> #pragma argsused void Bits(unsigned); int main() {unsigned x;
C++ Предоставить пользователю возможность выбрать цвет фона и текста в консоле Помогите пожалуйста написать программу, которая бы предоставляла пользователю возможность выбрать цвет фона и текста консоли, с помощью операторов: switch и system ("color"). http://www.cyberforum.ru/cpp-beginners/thread632980.html
C++ Построение сети в теории, на основе сокетов
Построение сетей на основе soket api - протокол только TCP\IP Раскажите в теории как основано это, кодов не надо так токово, просто какие и в каком порядке функции вызываються наприемр.
C++ Templates (composition). exception handling run-time error
Код компилируется. Если делать циклы для push and pop размера такого чтоб не превышало размеры Стока то все работает нормально если циклы больше размера стока то выходит вот такая картинка в...
C++ Создание окон http://www.cyberforum.ru/cpp-beginners/thread632939.html
Пожалуйста подскажите, как создавать и работать с окнами.
C++ Подскажите где ошибка, или может есть другой вариант реализации кода // Упорядочить статический массив(заполненый случайными числами), чтобы в нём чередовались чётные и нечётные элементы, разницу записываем в конец массива. // Функции не использовать. const int... подробнее

Показать сообщение отдельно
nameless
Эксперт С++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
04.08.2012, 22:51
KostyaKulakov,

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
31
#include <iostream>
#include <bitset>
 
static const int table[32] = { 0, 9, 1, 10, 13, 21, 2, 29, 11, 14, 16, 18, 22, 25, 3, 30,
                            8, 12, 20, 28, 15, 17, 24, 7, 19, 27, 23, 6, 26, 5, 4, 31 };
 
unsigned int NumberOfBits(unsigned int number){
    number |= number >> 1;
    number |= number >> 2;
    number |= number >> 4;
    number |= number >> 8;
    number |= number >> 16;
 
    return table[(unsigned int)(number * 0x07C4ACDDU) >> 27] + 1;
}
 
unsigned int EncryptingNumber(unsigned int number) {
   std::size_t number_bits = NumberOfBits(number);
   for (std::size_t i = 0; i < number_bits - 1; i +=2) {
      if ((number >> i ^ number >> i + 1) & 1) {
         number ^= 1 << i | 1 << i + 1;
      }
   }
   
   return number;
}
 
int main() {
   unsigned int number = 1521214;
   std::cout << EncryptingNumber(number) << std::endl;
}
http://liveworkspace.org/code/bc09511f0f1f4168bad6e29ad344a2fc

Вообще рекомендую книжку Генри Уоррена. В ней излагаются интересные приемы для работы с отдельными битами..
2
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru