Преобразование чисел в указанную систему счисления

Дата публикации 10 мар 2017 | Редактировалось 10 янв 2018
Всех приветствую!

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

Прежде всего небольшой ликбез, в таблице представлены числа из разных систем счисления и их эквивалент. Также сюда можно заглядывать во время чтения статьи.

ДесятичнаяШестнадцатиричнаяДвоичная четырех разрядная
0​
0​
0000​
1​
1​
0001​
2​
2​
0010​
3​
3​
0011​
4​
4​
0100​
5​
5​
0101​
6​
6​
0110​
7​
7​
0111​
8​
8​
1000​
9​
9​
1001​
10​
A​
1010​
11​
B​
1011​
12​
C​
1100​
13​
D​
1101​
14​
E​
1110​
15​
F​
1111​
Десятичная система счисления

Вначале разберем перевод из десятичной в шестнадцатиричную и двоичную. Чтобы перевести в двоичную нужно делить число на основание системы счисления и остаток от деления записывать в результат в обратном порядке. Так как у нас двоичная система счисления числа от 0 до 1, поэтому делить нужно на 2.

Имея число 117, нужно выполнить несколько шагов:
Код (Text):
  1. 117 / 2 = 1
  2. 58 / 2 = 0
  3. 29 / 2 = 1
  4. 14 / 2 = 0
  5. 7 / 2 = 1
  6. 3 / 2 = 1
  7. 1 / 2 = 1
Записываем в результат в обратном порядке(снизу вверх в данном случае) и получаем число: 1110101.

Преобразование десятичного числа в шестнадцатиричное число. Тут принцип такой же, нужно поделить десятичное число на основание системы счисления, остаток от деления записывать в результат в обратном порядке, шестнадцатиричная система счисления это цифры от 0 до 9 и латинские буквы - ABCDEF, в итоге имеем 16 символов.

Преобразуем например число 1024:

Код (Text):
  1. 1024 / 16 = 0
  2. 64 / 16 = 0
  3. 4 / 16 = 4
Итого получаем число: 400 в шестнадцатиричной системе счисления.

Двоичная система счисления

Перевод из двоичной в десятичную. Нам нужно каждый бит умножить на основание системы счисления и возвести в степень которая будет соответствовать позиции цифры справа налево и отнять 1, далее складывать со следующей преобразованной цифрой двоичного числа. Например у нас первая цифра у числа 10101111 это 1, позиция у неё справа налево 8-я - 1 = 7-я.
Поэтому запись будет такая: 1 * 2 ^ (8 - 1)

Имеем двоичное число 10101111, преобразовываем:
Код (Text):
  1. 1 * 2 ^ 7 = 128
  2. 0 * 2 ^ 6 = 0
  3. 1 * 2 ^ 5 = 32
  4. 0 * 2 ^ 4 = 0
  5. 1 * 2 ^ 3 = 8
  6. 1 * 2 ^ 2 = 4
  7. 1 * 2 ^ 1 = 2
  8. 0 * 2 ^ 0 = 0
128 + 0 + 32 + 0 + 8 + 4 + 2 + 0 = 174, нули можно в процессе сложения отбрасывать.

Преобразование из двоичной в шестнадцатиричную.
Тут все просто, каждое четырех разрядное двоичное число соответствует одной шестнадцатиричной цифре.
Например четырех разрядное двоичное число 1111 в десятичной это - 15 в шестнадцатиричной это - F.
Преобразование и запись ведется строго справа налево.

Есть число 10101111:
Код (Text):
  1. 1111 = F
  2. 1010 = A
Поэтому двоичное число 10101111 после преобразования в шестнадцатиричную: AF.


Шестнадцатиричная система счисления

Можно начать с простого преобразования в двоичную систему, если вспомнить, то одна шестнадцаиричная цифра соответствует четырех разрядному двоичному числу.
Дано шестнадцатиричное число FAE:
Код (Text):
  1. F = 1111
  2. A = 1010
  3. E = 1110
Итого получилось: 111110101110, все очень просто.

Из шестнадцатиричной в десятичную перевод, по уже знакомому принципу, умножаем на систему счисления и возводим в степень позиции цифры справа налево минус 1, при этом каждая цифра должна быть в десятичной системе счисления во время мат. операции.

Есть шестнадцатиричное число A10C:
Код (Text):
  1. 10 * 16 ^ 3 = 40960
  2. 1 * 16 ^ 2 = 256
  3. 0 * 16 ^ 1 = 0
  4. 12 * 16 ^ 0 = 12
Считаем результат суммирования - 40960 + 256 + 0 + 12 = 41228

0 2.487
Ronin_

Ronin_
Active Member

Регистрация:
24 дек 2016
Публикаций:
1