Ответы на все вопросы

FAQ / Программирование

Какой алгоритм перевода чисел из десятичной системы в двоичную и обратно?

Вопрос:

    Какой алгоритм перевода чисел из десятичной системы в двоичную и обратно? Восьми/ шестнадцатеричную? В двух словах, если не трудно. Или ссылочку дайте, где можно почитать.
    

Ответ:

    Для перевода чисел из десятичной системы исчисления в какую-либо другую используется метод деления. Допустим, у вас имеется число 173 и его необходимо перевести в двоичную систему. В данном случае модуль системы исчисления (количество цифр в обном десятке) равен 2 (для 16-ричной модуль равен 16, 8-ричной - 8). Делается это так:
    173 | 1 - делим 173 на 2, получаем: 173/2 = 86, остаток 1
    86 | 0 - делим 86 на 2, получаем 86/2= 43, остаток 0
    43 | 1 - 43/2 = 21, остаток - 1
    21 | 1 - 21/2 = 10, остаток - 1
    10 | 0 - 10/2 = 5, остаток - 0
    5 | 1 - 5/2 = 2, остаток - 1
    2 | 0 - 2/2 = 1, остаток - 0
    1 | 1 - на этом вычисления заканчиваются. Число читаем снизу вверх:
    10101101
    Еще для примера - представим число 2473 в 16-ричной системе исчисления:
    2475 | 11 (В) - 2475/16 = 154, остаток - 11
    154 | 10 (А) - 154/16 = 9, остаток - 10
    9 | 9 - на этом вычисления заканчиваются. Число читаем снизу вверх:
    9АВ
    В 16-ричной системе для обозначения цифр больше 9 используются первые буквы латинского алфавита:
    Число в 10-й системе число в 16-й системе
    0 0
    1 1
    2 2
    ..
    ..
    9 9
    10 A
    11 B
    12 C
    13 D
    14 E
    15 F
    16 10
    17 11
    ....
    ....
    Для перевода чисел из какой-либо системы исчисления в десятичную необходимо каждую цифру числа умножить на модуль системы возведенный в степень, равную разряду данной цифры и затем сложить результаты. Например:
    Переведем число 1101101101 в десятичную систему исчисления.
    9 8 7 6 5 4 3 2 1 0 - разряд цифры, находящейся ниже.
    1 1 0 1 1 0 1 1 0 1 - число
    N = 1*2^9 + 1*2^8 + 0*2^7 + 1*2^6 + 1*2^5 + 0*2^4 + 1*2^3 + 1*2^2 + 0*2^1 +
    1*2^0 =
    = 1*512 + 1*256 + 0*128 + 1*64 + 1*32 + 0*16 + 1*8 + 1*4 + 0*2 + 1*1 = 877.
    Для 16-ричной системы необходимо было бы 2 в предыдущем выражении заменить на 16.
    Алексей.
    

Версия для печати Найти похожие статьи
Поиск по сайту

Архив

ВсПнВтСрЧтПтСб
1234567
891011121314
15161718192021
22232425262728
293012345
6789101112
13141516171819
20212223242526
272829303112



Мы рекомендуем