Advertisement
Guest User

Untitled

a guest
Mar 12th, 2023
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.27 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstring>
  3.  
  4. using namespace std;
  5.  
  6. class Binary {
  7.     bool data[32]; // приватный массив для хранения битов числа
  8.     public:
  9.     Binary(); // конструктор по умолчанию
  10.     Binary(int value); // конструктор из целочисленного
  11.     Binary(char *s); // конструктор из строки
  12.     void show() const; // метод для вывода числа в двоичном виде
  13.     int to_int() const; // метод для получения значения типа int
  14. };
  15.  
  16. Binary::Binary() {
  17.     memset(data, false, sizeof(data)); // инициализация массива нулями
  18. }
  19.  
  20. Binary::Binary(int value) {
  21.     memset(data, false, sizeof(data)); // инициализация массива нулями
  22.     int i = 0;
  23.     while (value > 0) { // переводим число в двоичную систему счисления
  24.         data[i++] = value % 2;
  25.         value /= 2;
  26.     }
  27. }
  28.  
  29. Binary::Binary(char *s) {
  30.     memset(data, false, sizeof(data)); // инициализация массива нулями
  31.     int len = strlen(s);
  32.     for (int i = len - 1, j = 0; i >= 0; i--, j++) {
  33.         if (s[i] == '1')
  34.             data[j] = true; // заполняем массив данными из строки
  35.     }
  36. }
  37.  
  38. void Binary::show() const {
  39.     int i;
  40.     for (i = 31; i >= 0; i--) {
  41.         if (data[i]) break; // ищем первую единицу в массиве
  42.     }
  43.     if (i == -1) { // если все элементы массива равны нулю
  44.         cout << "0\n";
  45.         return;
  46.     }
  47.     for (int j = i; j >= 0; j--) {
  48.         cout << data[j]; // выводим на экран все элементы массива, начиная с первой единицы
  49.     }
  50.     cout << endl;
  51. }
  52.  
  53. int Binary::to_int() const {
  54.     int value = 0;
  55.     int mult = 1;
  56.     for (int i = 0; i < 32; i++) {
  57.         if (data[i]) {
  58.             value += mult; // переводим число в десятичную систему счисления
  59.         }
  60.         mult *= 2;
  61.     }
  62.     return value;
  63. }
  64.  
  65. int main() {
  66.     int n;
  67.     cin >> n;
  68.     Binary bin(n);
  69.     bin.show();
  70.     return 0;
  71. }
  72.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement