КОРЗИНА
магазина
8 (499) 500-14-56 | ПН. - ПТ. 12:00-18:00
ЛЕСНОРЯДСКИЙ ПЕРЕУЛОК, 18С2, БЦ "ДМ-ПРЕСС"

Урок 32. Перевод чисел между системами счисления

Общие сведения:

При программировании мы часто сталкиваемся с необходимостью перевода чисел между системами счисления, по основанию: 2, 4, 8, 16 и 10.

Основание системы счисления указывает какое количество цифр используется в этой системе для написания чисел:

  • Привычная нам система счисления по основанию 10 (десятичная система счисления) использует 10 цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. После 9 идёт не цифра, а число 10, состоящее из двух цифр: 1 и 0. Таким образом, мы записываем любые числа, используя указанные цифры в определённой последовательности.
  • Система счисления по основанию 2 (двоичная система счисления) использует 2 цифры: 0, 1.
  • Система счисления по основанию 4 (четверичная система счисления) использует 4 цифры: 0, 1, 2, 3.
  • Система счисления по основанию 8 (восьмеричная система счисления) использует 8 цифр: 0, 1, 2, 3, 4, 5, 6, 7.
  • Система счисления по основанию 16 (шестнадцатеричная система счисления) использует 16 цифр: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. В данном случае, буквы ABCDEF являются цифрами. Цифра A шестнадцатеричной системы, равна числу 10 десятичной системы, цифра B равна числу 11 десятичной системы, ... , цифра F равна числу 15 десятичной системы.

Можно использовать любую систему счисления, например по основанию 12 (счет дюжинами), но наиболее популярными при программировании, являются: десятичная, шестнадцатеричная и двоичная, системы счисления.

Все выше перечисленные системы счисления относятся к позиционным системам. Значение числа зависит не только от того из каких цифр оно состоит, но и в какой последовательности они записаны. Например число 1234 не равно числу 4321.

Методы представления чисел в разных системах счисления:

  • двоичная система счисления:
    • (10101)2 - математическое представление (число)основание системы
    • 0b10101 - представление в скетчах Arduino IDE (число записывается с ведущими символами "0b").
    • B10101 - представление в скетчах Arduino IDE (число до 256 записывается с ведущим символом "B").
  • восьмеричная система счисления:
    • (10101)8 - математическое представление (число)основание системы
    • 010101 - представление в скетчах Arduino IDE (число записывается с ведущим символом "0" ноль).
  • десятичная система счисления:
    • (10101)10 - математическое представление (число)основание системы
    • 10101 - представление в скетчах Arduino IDE (число записывается как есть без ведущих символов)
  • шестнадцатеричная система счисления:
    • (10101)16 - математическое представление (число)основание системы
    • 0x10101 - представление в скетчах Arduino IDE (число записывается с ведущими символами "0x").

Перевод чисел в десятичную систему счисления:

Для перевода числа из любой системы счисления в десятичную нужно сложить все цифры этого числа, предварительно умножив каждое из них на основание системы счисления, из которой производится перевод, возведя её в степень соответствующую позиции цифры в числе:

Σ(цифра_числа * основание_системы позиция_цифры)

Примеры перевода чисел в десятичную систему счисления:

  • (101011)2 = 1*25 + 0*24 + 1*23 + 0*22 + 1*21 + 1*20 = 32+0+8+0+2+1 = (43)10.
  • (1357)8 = 1*83 + 3*82 + 5*81 + 7*80 = 512+192+40+7 = (751)10.
  • (3BC9)16 = 3*163 + B*162 + C*161 + 9*160 = 3*163 + 11*162 + 12*161 + 9*160 = 12288+2816+192+9 = (15305)10.

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

Для перевода чисел из десятичной системы счисления в любую другую, необходимо целочисленно делить переводимое число на основание той системы, в которую мы хотим его перевести, до тех пор пока результат целочисленного деления не станет равен 0. Результатом перевода будут цифры остатка от каждого деления, в обратном порядке.

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

  • (43)10 перевести в двоичную систему счисления:
    • 43/2 = 21 и 1 в остатке
    • 21/2 = 10 и 1 в остатке
    • 10/2 = 5 и 0 в остатке
    • 5/2 = 2 и 1 в остатке
    • 2/2 = 1 и 0 в остатке
    • 1/2 = 0 и 1 в остатке
    • результат - цифры остатков в обратном порядке = (101011)2
  • (751)10 перевести в восьмеричную систему счисления:
    • 751/8 = 93 и 7 в остатке
    • 93/8 = 11 и 5 в остатке
    • 11/8 = 1 и 3 в остатке
    • 1/8 = 0 и 1 в остатке
    • результат - цифры остатков в обратном порядке = (1357)8
  • (15305)10 перевести в шестнадцатеричную систему счисления:
    • 15305/16 = 956 и 9 в остатке
    • 956/16 = 59 и 12 в остатке - соответствует цифре (C)16
    • 59/16 = 3 и 11 в остатке - соответствует цифре (B)16
    • 3/16 = 0 и 3 в остатке
    • результат - цифры остатков в обратном порядке = (3BC9)16

Простой метод перевода:

Легче всего переводить числа через двоичную систему счисления. О том как это сделать рассказано в нашем видеоуроке.




Обсуждение

Гарантии и возврат Используя сайт Вы соглашаетесь с условями