Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstring>
- using namespace std;
- class Binary {
- bool data[32]; // приватный массив для хранения битов числа
- public:
- Binary(); // конструктор по умолчанию
- Binary(int value); // конструктор из целочисленного
- Binary(char *s); // конструктор из строки
- void show() const; // метод для вывода числа в двоичном виде
- int to_int() const; // метод для получения значения типа int
- };
- Binary::Binary() {
- memset(data, false, sizeof(data)); // инициализация массива нулями
- }
- Binary::Binary(int value) {
- memset(data, false, sizeof(data)); // инициализация массива нулями
- int i = 0;
- while (value > 0) { // переводим число в двоичную систему счисления
- data[i++] = value % 2;
- value /= 2;
- }
- }
- Binary::Binary(char *s) {
- memset(data, false, sizeof(data)); // инициализация массива нулями
- int len = strlen(s);
- for (int i = len - 1, j = 0; i >= 0; i--, j++) {
- if (s[i] == '1')
- data[j] = true; // заполняем массив данными из строки
- }
- }
- void Binary::show() const {
- int i;
- for (i = 31; i >= 0; i--) {
- if (data[i]) break; // ищем первую единицу в массиве
- }
- if (i == -1) { // если все элементы массива равны нулю
- cout << "0\n";
- return;
- }
- for (int j = i; j >= 0; j--) {
- cout << data[j]; // выводим на экран все элементы массива, начиная с первой единицы
- }
- cout << endl;
- }
- int Binary::to_int() const {
- int value = 0;
- int mult = 1;
- for (int i = 0; i < 32; i++) {
- if (data[i]) {
- value += mult; // переводим число в десятичную систему счисления
- }
- mult *= 2;
- }
- return value;
- }
- int main() {
- int n;
- cin >> n;
- Binary bin(n);
- bin.show();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement