Краткое пособие по переводу между системами счисления с основаниями 2, 8, 10, 16

в 6:58, , рубрики: NS, математика для программистов, системы счисления

Термины

  • NS (СС) — Numeral System (Система Счисления)

Перевод из десятичной NS в двоичную

Существует два способа перевести из десятичной NS в двоичную. Далее будут разобраны оба алгоритма.

Алгоритм №1

Мы можем перевести число n_{10} из десятичной NS в двоичную, следуя следующему алгоритму:
Для этого необходимо выполнить следующие действия:

  1. Делим n_{10} на 2 и записываем остаток от деления

  2. Результат деления вновь делим на 2 и опять записываем остаток

  3. Повторяем операцию до тех пор пока результат деления не будет равен нулю

  4. Записываем полученные остатки в обратном порядке. Полученное число и будет искомым n_{2}

Пример:
Дано число n_{10}=377_{10};; n_{2}=?
377 div 2=188: (ост. 1)
188 div 2=94: (ост. 0)
94 div 2=47: (ост. 0)
47 div 2=23: (ост. 1)
23 div 2=11: (ост. 1)
11 div 2=5: (ост. 1)
5 div 2=2: (ост. 1)
2 div 2=1: (ост. 0)
1 div 2=0: (ост. 1)

Ответ: n_{2}=101111001_{2}

Алгоритм №2

Есть и другой способ перевода числа n_{10} из десятичной NS в двоичную: путем "прикидок" степеней двоек, не превышающих данного числа.

Пример:
Дано число n_{10}=575_{10};;n_2=?

  1. Шаг первый. Прикинем степень двойки, не превышающую данного числа.

    512<575<1024; rightarrow; 2^9<575<2^{10}

  2. Шаг второй. Так как число 575 больше 2^9, значит мы можем представить число 575 в виде суммы 2^9+63.

  3. Повторим первый шаг: прикинем степень двойки, не превышающую второго слагаемого.

    32<63<64;rightarrow;2^5<63<2^6

  4. Повторим второй шаг: так как число 63 больше 2^5, значит мы можем представить число 63 в виде суммы 2^5+31.

  5. Далее повторим вторые и третьи шаги до тех пор, пока мы не разложим число 575 на сумму степеней двоек. В итоге мы получим следующую запись:

    575=2^9+2^5+2^4+2^3+2^2+2^1+2^0

  6. Шаг третий. Расставим единицы в тех разрядах, номера которых равны степеням двоек в полученной ранее сумме (разряды пронумерованы с Краткое пособие по переводу между системами счисления с основаниями 2, 8, 10, 16 - 31).

    n_2=overset{9}{1},overset{8}{0},overset{7}{0},overset{6}{0},overset{5}{1},overset{4}{1},overset{3}{1},overset{2}{1},overset{1}{1},overset{0}{1},_{2}

Ответ: n_{2}=1000111111_{2}

Перевод из двоичной NS в десятичную

Перевод числа из двоичной NS в десятичную осуществляется путем умножения каждого разряда числа на 2^k, где k — номер разряда, начиная с Краткое пособие по переводу между системами счисления с основаниями 2, 8, 10, 16 - 36.

Пример:
Дано число n_2=10101000101111_2;; n_{10}=?

  1. Шаг первый. Пронумеруем разряды данного нам двоичного числа от 0 справа налево:

n_2=overset{13}{1},overset{12}{0},overset{11}{1},overset{10}{0},overset{9}{1},overset{8}{0},overset{7}{0},overset{6}{0},overset{5}{1},overset{4}{0},overset{3}{1},overset{2}{1},overset{1}{1},overset{0}{1},_2

  1. Шаг второй. Запишем сумму вида 2^k, где k — номер разряда, начиная с Краткое пособие по переводу между системами счисления с основаниями 2, 8, 10, 16 - 41:

n_{10}=2^{13}+2^{11}+2^9+2^5+2^3+2^2+2^1+2^0=10799_{10}

Ответ: n_{10}=10799_{10}

Перевод из двоичной NS в восьмеричную

Разобьем данное нам число n_2 на триады (на блоки по три цифры), а затем заменим каждую триаду соответствующей цифрой, согласно таблице перевода (см приложение).

Пример:
Дано число n_2=10011_2;; n_{8}=?

n_2=,'010'011_2

По таблице увидим, что двоичному числу 010_2=10_2 соответствует восьмеричное число 2_8, а числу 011_2=11_23_8, значит, заменив каждую триаду на соответствующее восьмеричное число, получим:

n_8=23_8

Ответ: n_8=23_8

Перевод из восьмеричной NS в двоичную

Заменим каждую цифру числа n_{8} соответствующей триадой из таблицы перевода (см приложение).

Пример:
Дано число n_{8}=735_{8};; n_{2}=?

left.begin{align} &n_{8}=735_{8} \ &7_{8}rightarrow111_{2} \ &3_{8}rightarrow011_{2} \ &5_{8}rightarrow101_{2} \end{align}right};Rightarrow ; n_{2}=111011101_{2}

Ответ: n_{2}=111011101_{2}

Перевод из десятичной NS в восьмеричную

Алгоритм перевода в восьмеричную NS тот же, что и алгоритм №1 перевода в двоичную NS.
Необходимо выполнить следующие действия:

  1. Делим n_{10} на 8 и записываем остаток от деления

  2. Результат деления вновь делим на 8 и опять записываем остаток

  3. Повторяем операцию до тех пор пока результат деления не будет равен нулю

  4. Записываем полученные остатки в обратном порядке. Полученное число и будет искомым n_{8}

Пример:
Дано число n_{10}=1089_{10};; n_{8}=?
1089 div 8=136: (ост. 1)
136 div 8=17: (ост. 0)
17 div 8=2: (ост. 1)
2 div 8=0: (ост. 2)

Ответ: n_{8}=2101_{8}

Перевод из восьмеричной NS в десятичную

Для перевода из восьмеричной NS в десятичную, необходимо умножить каждый разряд числа n_{8} на 8^k, где k — номер разряда, начиная с Краткое пособие по переводу между системами счисления с основаниями 2, 8, 10, 16 - 70, а затем сложить полученные значения.

Пример:
Дано число n_{8}=4766_{8};; n_{10}=?

n_{8}=overset{3}{4},overset{2}{7},overset{1}{6},overset{0}{6},_{8}Rightarrow n_{10}=4cdot8^3+7cdot8^2+6cdot8^1+6cdot8^0=2550_{10}

Ответ: n_{10}=2550_{10}

Перевод из десятичной NS в шестнадцатеричную

Алгоритм перевода в восьмеричную NS практически тот же, что и алгоритм №1 перевода в двоичную NS.
Необходимо выполнить следующие действия:

  1. Делим n_{10} на 16 и записываем остаток от деления

  2. Результат деления вновь делим на 16 и опять записываем остаток

  3. Повторяем операцию до тех пор пока результат деления не будет равен нулю

  4. Переводим остатки бо́льшие 9 согласно таблице перевода (см приложение)

  5. Записываем полученные остатки в обратном порядке. Полученное число и будет искомым n_{16}

Пример:
Дано число n_{10}=10492_{10};; n_{16}=?
10492div16=655: (ост. 12 rightarrow C)
655div16=40: (ост. 15 rightarrow F)
40div16=2: (ост. 8)
2div16=0: (ост. 2)

Ответ: n_{16}=28FC_{16}

Перевод из шестнадцатеричной NS в десятичную

Для перевода из восьмеричной NS в десятичную, необходимо перевести Aldots F в соответствующие числа 10ldots 15 по таблице перевода (см приложение) и умножить каждый разряд числа n_{16} на 16^k, где k — номер разряда, начиная с Краткое пособие по переводу между системами счисления с основаниями 2, 8, 10, 16 - 90, а затем сложить полученные значения.

Пример:
Дано число n_{16}=FD1_{16};;n_{10}=?

left.begin{align} &n_{16}=overset{2}{F},overset{1}{D},overset{0}{1},_{16} \ &F_{16}rightarrow15_{10} \ &D_{16}rightarrow13_{10} \ end{align} right}  Rightarrow ; n_{10}=15cdot16^2+13cdot 16^1+1cdot 16^0=4049_{10}

Ответ: n_{10}=4049_{10}


Приложение

Общий вид формулы для перевода числа из произвольной NS в десятичную:

LARGE N_{10}=sumlimits_{i=0}^ka_icdot b^i

, где:

  • N_{10} — число в десятичной NS

  • a_i — цифра числа в исходной NS, начиная с младшего разряда (справа налево)

  • b — основание исходной NS

  • k — номер старшего разряда (индекс последней цифры = количество цифр в исходном числе -1)

Таблица перевода между NS

N_{10}

N_{2}

N_{8}

N_{16}

0

0

0

0

1

1

1

1

2

10

2

2

3

11

3

3

4

100

4

4

5

101

5

5

6

110

6

6

7

111

7

7

8

1000

10

8

9

1001

11

9

10

1010

12

A

11

1011

13

B

12

1100

14

C

13

1101

15

D

14

1110

16

E

15

1111

17

F

...

...

...

...

Автор: githubVladimirT

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js