Электроника:Цифровая электроника/Системы счисления/Восьмеричная и шестнадцатеричная системы счисления

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Макаров В. (valemak) Контакты:</br>* Habr: @vakemak</br>* Сайт: www.valemak.com</br>Перевёл статей: 648.
Проверка/Оформление/Редактирование: Мякишев Е.А.


Восьмеричная и шестнадцатеричная системы счисления[1]

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

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

Чтобы инженерам, техническим специалистам и программистам было легче «говорить» на этом языке цифрового мира, используются другие системы счисления, со взвешенным позиционированием, которые очень легко преобразовывать в двоичную систему счисления и обратно.

Одна из этих систем называется восьмеричной системой счисления, потому что это система с аналогичным взвешиванием позиций и основанием, равным восьми. Допустимые цифры включают символы 0, 1, 2, 3, 4, 5, 6 и 7. Вес каждой позиции отличается от следующего в восемь раз.

Другая система называется шестнадцатеричной системой счисления, потому что это система взвешенных позиций с основанием, равным шестнадцати. Допустимые цифры включают обычные десятеричные символы 0, 1, 2, 3, 4, 5, 6, 7, 8 и 9, а также шесть буквенных символов A, B, C, D, E и F, чтобы в сумме было шестнадцать символов.

Как вы уже догадались, вес каждой позиции отличается от предыдущей в шестнадцать раз.

Давайте снова посчитаем от нуля до двадцати, используя десятичную, двоичную, восьмеричную и шестнадцатеричную системы, чтобы сопоставить эти системы счисления:

Числа Десятеричные
цифры
Двоичные
цифры
Восьмеричные
цифры
Шестнадцатеричные
цифры
Ноль 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
Шестнадцать 16 10000 20 10
Семнадцать 17 10001 21 11
Восемнадцать 18 10010 22 12
Девятнадцать 19 10011 23 13
Двадцать 20 10100 24 14

Восьмеричные и шестнадцатеричные системы счисления были бы бесполезны в практическом плане, если бы не их способность легко преобразовывать числа в двоичную систему счисления и обратно. Основная их миссия – служить в качестве «сокращённого» метода обозначения числа, представленного в электронном виде в двоичной форме.

Поскольку основания восьмеричного (равное восьми) и шестнадцатеричного (равное шестнадцати) числа кратны двоичному основанию (равному двум), двоичные биты могут быть сгруппированы вместе и напрямую преобразованы в соответствующие восьмеричные или шестнадцатеричные числа или наоборот. В восьмеричной системе двоичные биты сгруппированы по три (потому что 23 = 8), а в шестнадцатеричной системе двоичные биты группируются по четыре (потому что 24 = 16):

Преобразование двоичных чисел в восьмеричные

Преобразуем 10110111,12 в восьмеричную форму.

Разобьём биты на группы по три. Так как количество битов двоичного числа необязательно будет кратно трём, при необходимости нужно дописать (в начало целой части и в конец дробной части числа) нули, которые позволят сгруппировать (отдельно в целой части и отдельно в дробной части) должным образом:

10110111,12 = 010 110 111,1002

Теперь преобразуем по отдельности каждую тройку битов в их восьмеричный эквивалент:

Группы битов двоичного числа по три: 010 110 111 , 100
Эквиваленты в восьмеричной системе счисления: 2 6 7 4

Результат: 10110111,12 = 267,48

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

Преобразование двоичных чисел в шестнадцатеричные

Преобразование двоичного числа в шестнадцатеричное почти такое же.

Преобразуем 10110111,12 в шестнадцатеричную форму.

Разделим на группы по четыре бита (добавляя нули в целую и/или дробную часть числа при необходимости):

10110111,12 = 1011 0111,10002

Преобразуем каждую четвёрку битов в соответствующий шестнадцатеричный эквивалент:

Группы битов двоичного числа по четыре: 1011 0111 , 1000
Эквиваленты в шестнадцатеричной системе счисления: B 7 8

Результат: 10110111,12 = B7,816

Здесь нам пришлось сгруппировать биты по четыре, как слева, так и справа от двоичной запятой, добавляя (подразумеваемые) нули по мере необходимости для создания полных 4-битных групп.

Обратное преобразование (из восьмеричной/шестнадцатеричной системы в двоичную) осуществляется аналогично – каждую восьмеричную/шестнадцатеричную цифру переводим в ее эквивалентную двоичную (3- или 4-битную) группу битов с последующим объединением всех двоичных битовых групп.

К слову, шестнадцатеричная нотация более популярна, потому что двоичные битовые группы в цифровом оборудовании обычно кратны восьми (8, 16, 32, 64 и 128 бит), однако некоторые могут быть кратны 4 (но не кратны 8). Восьмеричная система основана на двоичных битовых группах по 3, и с этими тройками битов не всегда удобно работать там, где широко используются четвёрки битов.

См.также

Внешние ссылки