/******************************************************************************
Напишите программу, которая просит пользователя ввести число от 0 до 255.
Выведите его как 8-битовое бинарное число (формы #### ####). Не используйте побитовые операторы.
Подсказка 1: Воспользуйтесь способом № 2. Предполагается, что наименьшее число для сравнения — 128.
Подсказка 2: Напишите функцию для проверки входных чисел, являются ли они больше чисел умноженных на 2.
Если это так, то выводится ‘1’ и возвращается результат (исходное число минус число для сравнения).
*******************************************************************************/
#include <iostream>
using namespace std;
int bit1=0, bit2=0, bit3=0, bit4=0, bit5=0, bit6=0, bit7=0, bit8=0; // объявляем глобальные переменные, соответствующие каждому отдельному биту в вычисляемом значении и присваиваем по умолчанюю нули
//****************************************************
// ФУНКЦИЯ ДЛЯ ПОЛУЧЕНИЯ ЦЕЛОГО ЧИСЛА ОТ ПОЛЬЗОВАТЕЛЯ*
//****************************************************
int getNumber()
{
int numberFunc; // вводим переменную, которой присвоим значение от пользователя
cout << "Введите пожалуйста целое число от 0 до 255\n";
cin >> numberFunc; // получаем целое число от пользователя
return numberFunc; // возвращаем число инициатору
}
//****************************************************
//**********************************************************************************
// ФУНКЦИЯ ДЛЯ ПРОВЕРКИ ЦЕЛОГО ЧИСЛА, ЯВЛЯЕТСЯ ЛИ ОНО БОЛЬШЕ ЧИСЕЛ УМНОЖЕННЫХ НА 2 *
//**********************************************************************************
void testNumber(int numberFuncTestNumber)
{
if (numberFuncTestNumber >= 128) // на каждом этапе сравниваем текущее значение с 2*n . Если значение меньше текущего 2*n, то просто переходим к следующему разряду а значение bit останется равно 0
{
bit1 = 1; // если текущее значение больше или равно текущему 2*n то переменной соответствующего разряда присваиваем 1
numberFuncTestNumber = numberFuncTestNumber - 128; // из текущего значения вычитаем текущее 2*n
}
if (numberFuncTestNumber >= 64)
{
bit2 = 1;
numberFuncTestNumber = numberFuncTestNumber - 64;
}
if (numberFuncTestNumber >= 32)
{
bit3 = 1;
numberFuncTestNumber = numberFuncTestNumber - 32;
}
if (numberFuncTestNumber >= 16)
{
bit4 = 1;
numberFuncTestNumber = numberFuncTestNumber - 16;
}
if (numberFuncTestNumber >= 8)
{
bit5 = 1;
numberFuncTestNumber = numberFuncTestNumber - 8;
}
if (numberFuncTestNumber >= 4)
{
bit6 = 1;
numberFuncTestNumber = numberFuncTestNumber - 4;
}
if (numberFuncTestNumber >= 2)
{
bit7 = 1;
numberFuncTestNumber = numberFuncTestNumber - 2;
}
if (numberFuncTestNumber >= 1)
{
bit8 = 1;
}
}
//****************************************************
int main()
{
setlocale(LC_ALL, "rus");
int number = getNumber(); // получаем значение от пользователя
if (number >=256 || number < 0) // проверяем корректность введенного числа
{
cout << "введенное число не удовлетворяет начальным условиям\n";
return 0;
}
else
{
testNumber (number);
cout << "Число " << number << " в двоичной системе будет " << bit1 << bit2 << bit3 << bit4 << " " << bit5 << bit6 << bit7 << bit8; // выводим полученные значения
}
return 0;
}