Перевод чисел в различные системы счисления

Перевод чисел в различные системы счисления

Онлайн перевод дробных чисел из десятичной системы счисления

Введите число:


Введите основание системы счисления:

Подробно о переводе чисел из одной системы счисления в другую рассмотрено в этой статье.

Реализация на C++

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#include <iostream>
using namespace std;
// Отображение шестнадцатеричной цифры
char digit(int num)
{
  switch (num) {
  case 0: return '0';
  case 1: return '1';
  case 2: return '2';
  case 3: return '3';
  case 4: return '4';
  case 5: return '5';
  case 6: return '6';
  case 7: return '7';
  case 8: return '8';
  case 9: return '9';
  case 10: return 'A';
  case 11: return 'B';
  case 12: return 'C';
  case 13: return 'D';
  case 14: return 'E';
  case 15: return 'F';
  }
}
// Получение целой части числа
int dectox_int(int a, int p, char* s)
{
  int num = (int)a;
  int rest = num % p;
  num /= p;
  if (num == 0)
  {
    s[0] = digit(rest); return 1;
  }
  int k = dectox_int(num, p, s);
  s[k++] = digit(rest);
  return k;
}
// Получение дробной части числа
void dectox_double(double a, int p, char* s)
{
  int iter = 0;
  int k = 0;
  double a1 = a;
  do {
    a1 = a1 * p;
    int num = (int)(a1);
    s[k++] = digit(num);
    a1 -= (int)a1;
    iter++;
  } while (a1 > 0.00000001 && iter < 10);
  s[k] = '\0';
}
int main()
{
  double a;
  char s[80] = { 0 };
  int p;
  system("chcp 1251");
  system("cls");
  cout << "Введите число: ";
  cin >> a;
  cout << "Введите основание системы счисления: ";
  cin >> p;
  int k = dectox_int((int)a, p, s);
  s[k++] = ',';
  dectox_double(a - (int)a, p, &s[k]);
  cout << s;
  cin.get(); cin.get();
  return 0;
}

Результат выполнения

4 комментария к “Перевод чисел в различные системы счисления”

  1. Пользователь

    Ошибка:
    68:3: error: stray '\342' in program
    68:3: error: stray '\200' in program
    68:3: error: stray '\224' in program
    In function 'int main()':
    68:24: error: expected primary-expression before 'int'
    68:27: error: 'a' cannot be used as a function
    In function 'char digit(int)':
    25:1: warning: control reaches end of non-void function [-Wreturn-type]
    Что делать..?

  2. НИКОЛАЙ

    Простите, пожалуйста. Но у меня не получается на подобии вашей программы составить свою, которая бы переводила дробную часть. (Тестировал вашу программу, она вместо дробной части выводит 0) подскажите, пожалуйста, что делать

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх