Advertisement
Gamerkin

1 saod

Oct 19th, 2023
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.45 KB | None | 0 0
  1. #include <iostream>
  2. #include <string>
  3. #include <bitset>
  4.  
  5. using namespace std; // Подключение пространства имён
  6.  
  7. void First() {
  8.     cout << "Установка четырёх старших битов в 1" << endl;
  9.     // Присвоение переменной значения из константы в шестнадцатеричной системе
  10.     unsigned int decimal = 15;
  11.     const int n = 8;
  12.     //int n = 0x85; // в двоичной 10000101
  13.     string binary = bitset<n>(decimal).to_string();
  14.     cout << "Значение переменной в двоичном коде: " << binary << endl;
  15.  
  16.     // Маска для установки в 1 четырёх старших битов
  17.     unsigned int maska = 240;
  18.     decimal |= maska; // в двоичной 11110000
  19.     string maska2 = bitset<n>(maska).to_string();
  20.     cout << "Значение маски: " << maska2 << endl;
  21.     string result = bitset<n>(decimal).to_string();
  22.     cout << "Значение переменной после преобразований: " << result << endl << endl;
  23.  
  24.     // Вывод результата
  25.     //cout << "Значение переменной после преобразования: " << n << endl;
  26.  
  27. }
  28.  
  29. void Second() {
  30.     cout << "Обнуление 9-го, 11-го, 3-го битов" << endl;
  31.     // Определение переменной целого типа
  32.     unsigned int value;
  33.     const int n = 8;
  34.  
  35.     // Ввод значения с клавиатуры
  36.     cout << "Введите значение переменной: "; cin >> value; //cout << endl;
  37.     string value2 = bitset<n>(value).to_string();
  38.     cout << "Значение переменной в двоичном коде: " << value2 << endl;
  39.     value &= (~((1 << 9) | (1 << 11) | (1 << 3))); // обнуление 9-го, 11-го, 3-го битов
  40.     string result = bitset<n>(value).to_string();
  41.     // Вывод результата          
  42.     cout << "Значение переменной после преобразования: " << result << endl << endl;
  43.  
  44. }
  45.  
  46. void Third() {
  47.     cout << "Умножение значения переменной на 512 с использованием поразрядной операции" << endl;
  48.     // Определение переменной целого типа
  49.     unsigned int value;
  50.     const int n = 16;
  51.  
  52.     // Ввод значения с клавиатуры
  53.     cout << "Введите значение переменной: "; cin >> value; //cout << endl;
  54.     string value2 = bitset<n>(value).to_string();
  55.     cout << "Значение переменной в двоичном коде: " << value2 << endl;
  56.     // Умножение значения переменной на 512 с использованием поразрядной операции
  57.     value = value << 9; // Сдвиг влево на 9 битов эквивалентен умножению на 2^9 (512)
  58.     string result = bitset<n>(value).to_string();
  59.     // Вывод значения переменной после умножения
  60.     cout << "Значение переменной после умножения на 512: " << result << endl << endl;
  61.  
  62. }
  63.  
  64. void Fourth() {
  65.     cout << "Деление значения переменной на 512 с использованием поразрядной операции" << endl;
  66.     // Определение переменной целого типа
  67.     unsigned int value;
  68.     const int n = 16;
  69.  
  70.     // Ввод значения с клавиатуры
  71.     cout << "Введите значение переменной: "; cin >> value; //cout << endl;
  72.     string value2 = bitset<n>(value).to_string();
  73.     cout << "Значение переменной в двоичном коде: " << value2 << endl;
  74.     // Деление значения переменной на 512 с использованием поразрядной операции
  75.     value = value >> 9; // Сдвиг вправо на 9 битов эквивалентен делению на 2^9 (512)
  76.     string result = bitset<n>(value).to_string();
  77.     // Вывод значения переменной после умножения
  78.     cout << "Значение переменной после деления на 512: " << result << endl << endl;
  79. }
  80.  
  81. void Fiveth() {
  82.     int number, num;
  83.     const int n = 32;
  84.     cout << "Введите число: ";
  85.     cin >> number;
  86.     cout << "Введите номер бита для обнуления (от 0 до 31): ";
  87.     cin >> num;
  88.     string number2 = bitset<n>(number).to_string();
  89.     cout << "Значение - " << number2 << endl;
  90.     // Инициализируем маску единицей в младшем разряде
  91.     int mask = 1;
  92.     string mask2 = bitset<n>(mask).to_string();
  93.     cout << "Маска - " << mask2 << endl;
  94.     // Сдвигаем маску на n позиций влево
  95.     mask <<= num;
  96.  
  97.     // Применяем побитовую операцию НЕ (~) к маске, чтобы инвертировать все биты
  98.     mask = ~mask;
  99.  
  100.     // Применяем побитовую операцию И (&) между числом и маской,
  101.     // чтобы обнулить n-ый бит в числе
  102.     number &= mask;
  103.     string result = bitset<n>(number).to_string();
  104.     cout << "Результат: " << result << endl;
  105. }
  106.  
  107.  
  108.  
  109.  
  110. int main()
  111. {  
  112.     setlocale(0, "");
  113.  
  114.     First();
  115.     Second();
  116.     Third();
  117.     Fourth();
  118.     Fiveth();
  119.  
  120.     return 0;
  121.     system("pause");
  122. }
  123.  
  124.  
  125. //#include <iostream>
  126. //#include <bitset>
  127. //
  128. //const unsigned int MASK = 0xF0000000; // Маска для установки 4 старших битов в 1
  129. //
  130. //int main() {
  131. //    setlocale(0, "");
  132. //    unsigned int value = 0x12345678; // Исходное значение переменной
  133. //
  134. //    value |= MASK; // Установка 4 старших битов в 1 с помощью поразрядной операции ИЛИ
  135. //
  136. //    std::bitset<32> bitset(value);
  137. //
  138. //    std::cout << "Исходное значение: " << std::bitset<32>(0x12345678) << std::endl;
  139. //    std::cout << "Маска: " << std::bitset<32>(MASK) << std::endl;
  140. //    std::cout << "Результат: " << bitset << std::endl;
  141. //
  142. //    return 0;
  143. //    system("pause");
  144. //}
  145.  
  146. #2
  147. #include <iostream>
  148. #include <fstream>
  149. #include <bitset>
  150. #include <ctime>
  151. #include <cstdlib>
  152. #include <chrono>
  153.  
  154. using namespace std;
  155.  
  156. void displayProgress(long int completed, long int maximum) {
  157.     static int lastPercent = -1;
  158.  
  159.     long int currentPercent = (completed * 100) / maximum;
  160.  
  161.     if (currentPercent != lastPercent) {
  162.         lastPercent = currentPercent;
  163.         cout << "Завершено " << currentPercent << "% выполнения." << std::endl;
  164.     }
  165. }
  166.  
  167. void sort1()
  168. {
  169.     setlocale(0, "");
  170.     const long int size = 10000000;  // Размер std::bitset (10^7 бит)
  171.     std::bitset<size>* numbers = new std::bitset<size>;  // Используем std::bitset для хранения битов
  172.  
  173.     long int input;
  174.     ofstream outfile("sort.txt");
  175.  
  176.     //cout << "Введите семизначные числа (0 для завершения):\n";
  177.     //while (true) {
  178.     //    cin >> input;
  179.     //    if (input == 0) {
  180.     //        break;
  181.     //    }
  182.     //    if (input >= size / 10 && input <= 9999999) {
  183.     //        numbers->set(input - 1, 1);
  184.     //    }
  185.     //    else {
  186.     //        cout << "Введите семизначное число!\n";
  187.     //    }
  188.     //}
  189.  
  190.     char repeat = 'n';
  191.  
  192.     cout << "Хотите выполнить автоматический ввод 20 чисел? (y/n): ";
  193.     cin >> repeat;
  194.  
  195.     if (repeat == 'y' || repeat == 'Y') {
  196.         srand(static_cast<unsigned int>(time(nullptr)));
  197.         for (long int i = 19; i > 1; i--) {
  198.             long int random_input = ((size / 10) * (1 + rand() % (8))) + ((rand() % (i + 1)) * (990));
  199.             numbers->set(random_input, 1);
  200.         }
  201.     }
  202.  
  203.     auto start_time = chrono::high_resolution_clock::now();
  204.     for (long int i = 0; i < size; i++) {
  205.         if (numbers->test(i)) {
  206.             outfile << i + 1 << endl;
  207.         }
  208.     }
  209.  
  210.     auto end_time = chrono::high_resolution_clock::now();
  211.     auto execution_time = chrono::duration_cast<chrono::milliseconds>(end_time - start_time);
  212.     outfile.close();
  213.     cout << "Завершено. Результат записан в файл sort.txt.\n";
  214.     cout << "Время выполнения: " << execution_time.count() << " миллисекунд." << endl;
  215. }
  216.  
  217. int main() {
  218.     sort1();
  219.     return 0;
  220. }
  221.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement