На данной странице расположены три функции языка си/си++, которые переводят десятичное число в двоичную систему счисления. Программы представлены как отдельно, так и в виде одной программы с тремя функциями с последующим вызовом их в main. Все программы проверены в Visual Studio.
Функция первая: реализация идеи при помощи массива (Си)
#include "stdio.h"
#include "conio.h"
#include "locale.h"
int main(int argc, char* argv[])
{
setlocale(0, "rus");
int a, i, mass[99];
for (i = 0; i < 99; i++)
{
mass[i] = 0;
}
printf("Введите число: ");
scanf_s("%d", &a);
i = 0;
while (a != 0)
{
if (a % 2 == 0)
{
mass[i] = 0;
a = a / 2;
}
else
{
mass[i] = 1;
a = a / 2;
}
i++;
}
i = i - 1;
for (; i >= 0; i--)
printf("%d", mass[i]);
_getch();
return 0;
}
Реализация программы при помощи побитового сдвига вправо (Си):
Данная программа очень схожа с предыдущей, отличие лишь в создании собственной функции и вызова его в main, а также использование побитового сдвига вправо вместо деления на 2.
#include "stdio.h"
#include "conio.h"
#include "locale.h"
int my_func(int a)
{
int i, mass[99];
for (i = 0; i < 99; i++)
{
mass[i] = 0;
}
i = 0;
while (a != 0)
{
if (a % 2 == 0)
{
mass[i] = 0;
}
else
{
mass[i] = 1;
}
a = a >> 1;
i++;
}
printf("В двоичной системе: ");
i = i - 1;
for (; i >= 0; i--)
printf("%d", mass[i]);
_getch();
return(0);
}
int main(int argc, char* argv[])
{
setlocale(0, "RUS");
int a;
printf("Введите целое десятичное число: ");
scanf_s("%d", &a);
my_func(a); //передаем в функцию число, которое нужно перевести
}
Реализация программы при помощи рекурсивной функции (Си++):
#include <iostream>
#include "locale.h"
using namespace std;
void Func(int n) {
if (n != 0)
Func(n / 2);
else return;
printf("%d", n % 2);
return;
}
int main() {
setlocale(0, "RUS");
int n;
cout << "Введите десятичное число: ";
cin >> n;
Func(n);
return 0;
}
В нижний код собраны все предыдущие функции в одну программу с вызовом их в основной функции main. Программа на вход принимает 3 различных десятичных числа и считает их соответственно по алгоритмам, которые заданы в main.
#include <iostream>
#include "conio.h"
#include "locale.h"
int my_func2(int a)
{
int i, mass[99];
for (i = 0; i < 99; i++)
{
mass[i] = 0;
}
i = 0;
while (a != 0)
{
if (a % 2 == 0)
{
mass[i] = 0;
a = a / 2;
}
else
{
mass[i] = 1;
a = a / 2;
}
i++;
}
i = i - 1;
for (; i >= 0; i--)
printf("%d", mass[i]);
return 0;
}
void rekurs(int a)
{
if (a != 0)
rekurs(a / 2);
else return;
printf("%d", a % 2);
return;
}
int my_func(int a)
{
int i, mass[99];
for (i = 0; i < 99; i++)
{
mass[i] = 0;
}
i = 0;
while (a != 0)
{
if (a % 2 == 0)
{
mass[i] = 0;
}
else
{
mass[i] = 1;
}
a = a >> 1;
i++;
}
i = i - 1;
for (; i >= 0; i--)
printf("%d", mass[i]);
return(0);
}
int main() {
setlocale(0, "RUS");
int a;
scanf_s("%d", &a);
printf("Первое число в двоичной:");
rekurs(a);
printf("\n");
scanf_s("%d", &a);
printf("Второе число в двоичной:");
my_func(a);
printf("\n");
scanf_s("%d", &a);
printf("Третье число в двоичной:");
my_func2(a);
_getch();
return 0;
}