Шестнадцатеричная система счисления
Шестнадцатеричная система счисления (позиционная система с основанием 16) широко используется для записи адресов и содержимого ячеек памяти компьютера. Её алфавит содержит 16 цифр, вместе с 10 арабскими цифрами (0..9) используются первые буквы латинского алфавита:
А = 10, В = 11, C = 12, D = 13, Е = 14, F = 15.
Таким образом, старшая цифра в шестнадцатеричной системе — F.
Для перевода чисел из десятичной системы в шестнадцатеричную используют алгоритм деления на 16 и взятия остатков. Важно не забыть, что все остатки, большие 9, нужно заменить на буквы:
Для обратного перехода значение каждой цифры умножают на 16 в степени, равной её разряду, и полученные значения складывают:
Можно также использовать схему Горнера:
1ВС16 = (1 • 16 + 11) • 16 + 12 = 27 • 16 + 12 = 444.
Основания двоичной и шестнадцатеричной систем связаны соотношением 24 = 16, поэтому можно переводить числа из шестнадцатеричной системы в двоичную напрямую. Алгоритмы перевода чисел из шестнадцатеричной системы в двоичную и обратно полностью аналогичны соответствующим алгоритмам для восьмеричной системы. Каждая шестнадцатеричная цифра представляется в виде тетрады (группы из четырёх двоичных цифр) (табл. 2.6).
Алгоритм перевода шестнадцатеричного числа в двоичную систему счисления
1. Перевести значение каждой цифры (отдельно) в двоичную систему. Записать результат в виде тетрады, добавив, если нужно, нули в начало (см. табл. 2.6).
|
|
2. Соединить тетрады в одно «длинное» двоичное число.
Например, переведём в двоичную систему число 5Е12316 (здесь показана разбивка на тетрады):
5Е12316 = 101 1110 0001 0010 00112.
Обратите внимание, что для цифр, меньших 8 (кроме первой), результат перевода в двоичную систему нужно дополнить старшими нулями до 4 знаков.
Алгоритм перевода двоичного числа в шестнадцатеричную систему счисления
1. Разбить двоичное число на тетрады, начиная справа.
В начало самой первой тетрады добавить слева нули, если это необходимо.
2. Перевести каждую тетраду (отдельно) в шестнадцатеричную систему счисления.
3. Соединить полученные цифры в одно «длинное» число.
Например: 10000100001010101111002 = 10 0001 0000 1010 1011 11002 = 210АВС16.
Шестнадцатеричная система оказалась очень удобной для записи значений ячеек памяти. Байт в современных компьютерах представляет собой 8 соседних битов, т. е. две тетрады. Таким образом, значение байтовой ячейки можно записать как две шестнадцатеричные цифры:
Каждый полубайт (4 бита) «упаковывается» в одну шестнадцатеричную цифру. Благодаря этому замечательному свойству, шестнадцатеричная система в сфере компьютерной техники практически полностью вытеснила восьмеричную1.
|
|
1 Начиная с 1964 года, когда шестнадцатеричная система стала широко использоваться в документации на новый компьютер IBM/360.
Перевод из шестнадцатеричной системы в восьмеричную (и обратно) удобнее выполнять через двоичную систему. Можно, конечно, использовать и десятичную систему, но в этом случае объём вычислений будет значительно больше.
При выполнении сложения нужно помнить, что в системе с основанием 16 перенос появляется тогда, когда сумма в очередном разряде превышает 15. Удобно сначала переписать исходные числа, заменив все буквы на их численные значения:
При вычитании заём из старшего разряда равен 1016 = 16, а все «промежуточные» разряды заполняются цифрой F — старшей цифрой системы счисления:
Если нужно работать с числами, записанными в разных системах счисления, их сначала переводят в какую-нибудь одну систему. Например, пусть требуется сложить 538 и 5616 и записать результат в двоичной системе счисления. Здесь можно выполнять сложение в двоичной, восьмеричной, десятичной или шестнадцатеричной системе. Переход к десятичной системе, а потом перевод результата в двоичную трудоёмок. Практика показывает, что больше всего ошибок делается при вычислениях в двоичной системе, поэтому лучше выбирать восьмеричную или шестнадцатеричную систему. Например, переведём число 538 в шестнадцатеричную систему через двоичную:
|
|
538 = 101 0112 = 10 10112 = 2В16.
Теперь сложим числа в 16-ричной системе:
2В16 + 5616 = 8116
и переведём результат в двоичную систему:
8116 = 1000 00012.
Вопросы и задания
1. Какие цифры используются в шестнадцатеричной системе? Сколько их?
2. Почему появилась необходимость использовать латинские буквы?
3. Сформулируйте алгоритмы перевода чисел из шестнадцатеричной системы счисления в двоичную и обратно.
4. Какое минимальное основание должно быть у системы счисления, чтобы в ней могли быть записаны числа 123, 4АВ, 9АЗ и 8455?
Задачи
1. Переведите в двоичную и восьмеричную системы числа 7F1A16, С73В16, 2FE116, А11216.
2. Переведите в двоичную и шестнадцатеричную системы числа 61728, 53418, 77118, 12348.
3. Переведите в восьмеричную и шестнадцатеричную системы числа
а) 11101111010102;
б) 10101011010101102;
в) 1111001101111101012;
г) 1101101101011111102.
4. Переведите числа 29, 43, 54, 120, 206 в шестнадцатеричную, восьмеричную и двоичную системы счисления.
5. Переведите числа 738, 1348, 2458, 3568 и 4678 в шестнадцатеричную, десятичную и двоичную системы счисления.
|
|
6. Запишите числа 101101012, 11101002, 10001112, 101111102 в шестнадцатеричной, восьмеричной и десятичной системах счисления.
7. Вычислите значения следующих выражений:
а) 3AF16 + 1СВЕ16;
б) 1ЕА16 + 7D716;
в) А8116 + 37716;
г) 1CFB16 - 22F16;
д) 22F16 - CFB16;
е) 1АВ16 - 2CD16.
8. Вычислите значения следующих выражений, запишите результат в двоичной, восьмеричной, десятичной и шестнадцатеричной системах счисления:
а) 4F16 + 1111102;
б) 5А16 + 10101112;
в) 2568 + 2С16;
г) 1101112 + 1358;
д) 1216 + 128 • 112;
е) 358 + 2С16 • 1012.
9. Вычислите значения следующих выражений, запишите результат в двоичной, восьмеричной, десятичной и шестнадцатеричной системах счисления:
а) 1516 • 1102;
б) 2А16 • 128;
в) 3416 : 328;
г) 7408 : 1816.
*10. Переведите числа 49,6875 и 52,9 в шестнадцатеричную систему счисления.
Дата добавления: 2019-11-16; просмотров: 603; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!