Шестнадцатеричная система счисления
Лабораторная работа №1
“Системы счисления”
Цель работы: получение практических навыков перевода чисел между различными системами счисления, а также выполнения арифметических операций в различных системах счисления.
Теоретическая часть
Системы счисления
Системы счисления разделяются на позиционные и непозиционные. Примером непозиционной системы счисления является римская система. Например, число 1994 в этой системе имеет вид
M C M X C I V
В латинской системе счисления каждая буква определяет соответствующую цифру:
M = 1000; D = 500; C = 100; L = 50; X = 10; V = 5; I = 1.
Число получается сложением значений цифр, если после большей цифры идет меньшая цифра, и вычитанием, если имеет место обратный порядок цифр. В приведенном выше примере имеем
1000 - 100 + 1000 - 10 + 100 + 1 + 1 + 1
Значение цифры в римской системе не зависит от положения (позиции) в числе. Поэтому такая система счисления и называется непозиционной.
Непозиционные системы счисления практически непригодны для выполнения арифметических операций.
Примером позиционной системы счисления является привычная для нас десятичная система.
Рассмотрим произвольное число 83887. Это число можно записать как сумму значений отдельных его цифр:
80000 + 3000 + 800 + 80 + 7 .
Как видно из этой записи, значение любой цифры в числе, в частности цифры 8, зависит от ее позиции.
Пусть число, записанное в произвольной позиционной системе счисления, имеет n+1 цифру в целой части и m цифр в своей дробной части:
an, an-1, an-2,..., a2, a1, a0, b1, b2,...,bk,
где ai - i-ая цифра целой части, bj - j-ая цифра дробной части числа.
Тогда значение этого числа можно представить в виде
an*рn + an-1*pn-1 +...+ a1*p1 + a0*p0 + b1*p-1 + b2*p-2 +...+ bk*p-k,
где p - основание системы счисления.
Например, для десятичного числа имеем
83887,45 = 8*104 + 3*103 + 8*102 + 8*101 + 7*100 + 4*10-1 + 5*10-2.
В ЭВМ наиболее часто применяются двоичная, восьмеричная и шестнадцатеричная системы счисления (2, 8 и 16 c/c). При этом восьмеричная и шестнадцатеричная системы счисления используются, как правило, для компактной записи двоичных чисел.
Двоичная система счисления.
Основанием системы счисления является число 2. Количество цифр, используемых для изображения чисел в любой системе счисления, равно основанию этой системы. В 2 с/с для этой цели используются цифры 0 и 1.
Рассмотрим произвольное двоичное число
11010,101 = 1*24 + 1*23 + 0*22 + 1*21 + 0*20 + 1*2-1 + 0*2-2 + 1*2-3 =
= 16 + 8 + 2 + 1/2 + 1/8 = 26 5/8 = 26,625 (10 с/с)
Представленная выше схема разложения двоичного числа является одновременно схемой перевода из 2 с/с в 10 c/c ( 2 --> 10 ).
Рассмотрим теперь перевод 10 --> 2. Такой перевод производится отдельно для целой и отдельно для дробной частей числа.
Пример. 43,37510 = 101011,0112
43 ¦ 2
42 21 ¦ 2
1 20 10 ¦ 2
1 10 5 ¦ 2
0 4 2 ¦ 2
1 2 1 ¦
0 ¦
<--------------
Деление производится до тех пор, пока не будет получено частное, меньшее делителя. После этого цифры частного и остатков записываются в обратном порядке. В данном случае получим 101011.
В самом деле, мы 5 раз разделили исходное число на 2. Следовательно, в нем 1 раз содержится 2 . Кроме этого, в числе также 0 раз содержится 24 , 1 раз 23 , 0 раз 22 , 1 раз 21 и 1 раз 20.
Тогда можно записать:
1*25 + 0*24 + 1*23 + 0*22 + 1*21 + 1*20,
т.е. мы получили разложение числа по степеням основания 2.
Для перевода дробной части рассмотрим вначале произвольную десятичную дробь. Будем последовательно умножать на 10 исходное число и дробные части получаемых в процессе преобразования чисел до тех пор, пока дробная часть очередного числа не станет равной нулю.
0, ¦ 935 * 10
9, ¦ 35 * 10
3, ¦ 5 * 10
5, ¦ 0
Эта схема показывает, что в исходном числе содержится 9*10-1 (после первого умножения) + 3 * 10-2 (после второго умножения) + 5 * 10-3 (после третьего умножения).
Если вместо умножения на 10 мы будем умножать на число p, то получим перевод дробной части числа в систему счисления с основанием p.
Для исходного числа
0, ¦ 375 * 2
0, ¦ 75 * 2
1, ¦ 5 * 2
1, ¦ 0
Следовательно, 0,37510 = 0,0112.
Конечная десятичная дробь не всегда образует конечную двоичную дробь. Например, для числа 0,4 получим
0, ¦ 4 * 2
0, ¦ 8 * 2
1, ¦ 6 * 2
1, ¦ 2 * 2
0, ¦ 4 * 2
0, ¦ 8 * 2
1, ¦ 6 * 2
..............
0,310 = 0,011001100110... = 0, (0110)2
Естественно, в этом случае полученное двоичное число округляют.
Восьмеричная система счисления.
Основанием системы является число 8. Для изображения числа используются 8 цифр: 0, 1, 2, 3, 4, 5, 6, 7.
Перевод 8 --> 10 :
35174,68 = 3*84 + 5*83 + 1*82 + 7*81 + 4*80 + 6*8-1 = 3*4096 + 5*512 + 1*64 +
+ 7*8 + 6/8 = 12288 + 2560 + 64 + 56 + 4 + 3/4 = 14972,7510.
Перевод 10 --> 8 . Схема перевода такая же, как и для 2 с/c.
397,210 = 615,158
397 ¦ 8 0, ¦ 2 * 8
32 49 ¦ 8 1, ¦ 6 * 8
77 48 6 4, ¦ 8 * 8
72 1 ¦ 6, ¦ 4 * 8
5 ¦ 3, ¦ 2 * 8
¦ 1, ¦ 6 * 8
<-------- ...........
0,210 = 0,146314631... = 0,(1463)
Полученная восьмеричная дробь округлена до двух цифр.
Правило округления: чтобы округлить дробное число до m цифр, нужно к (m+1)-ой цифре добавить половину цены разряда для данной системы счисления. Для 8 c/c половина цены разряда равна 4, для 2 с/c - 1, для 16 c/c - 8.
Примечание. Сложение в вышеприведенном примере было выполнено в восьмеричной системе счисления.
Перевод 8 --> 2. Для перевода восьмеричного числа в 2 c/c нужно каждую восьмеричную цифру записать в виде двоичной триады, т.е. трех двоичных цифр.
Восьмеричное число | Двоичное число | Двоичная триада |
Например, 3763,248 = 011 111 110 011 , 010 1002 = 11111110011,01012
Такое правило перевода 8 --> 2 связано с тем, что 8 = 23.
Например,
3763,248 = 3*83 + 7*82 + 6*81 + 3*80 + 2*8-1 + 4*8-2 = (0*22 + 1*21 + 1*20)*29 +
+ (1*22 + 1*21 + 1*20)*26 + (1*22 + 1*21 + 0*20)*23 + (0*22 + 1*21 + 1*20)*20 +
+ (0*22 + 1*21 + 0*20)*2-3 + (1*22 + 0*21 + 0*20)*2-6 = 0*211 + 1*210 + 1*29 +
+ 1*28 + 1*27 + 1*26 + 1*25 + 1*24 + 0*23 + 0*22 + 1*21 + 1*20 + 0*2-1 + 1*2-2 +
+ 0*2-3 + 1*2-4 + 0*2-5 + 0*2-6 = 011 111 110 011, 010 1002
Для перевода 2 --> 8 следует разделить двоичное число влево и вправо от запятой на триады, а затем заменить каждую триаду одной восьмеричной цифрой. Если первая триада в целой части или последняя триада в дробной части числа получаются неполными, то нужно дополнить их незначащими нулями.
Пример.
001¦011¦110¦111,101¦101¦0102 = 1367,55228
В связи с тем, что перевод 10 --> 8 или 8 --> 10 выполняется быстрее, чем перевод 10 --> 2 или 2 --> 10, то вместо 10 --> 2 выполняют 10 --> 8 --> 2 , а вместо 2 --> 10 выполняют 2 --> 8 --> 10 .
Шестнадцатеричная система счисления.
Основанием системы является число 16. Для изображения числа нужно использовать 16 цифр. Так как цифр 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 недостаточно, то для остальных цифр используются первые буквы латинского алфавита: A (цифра 10), B (цифра 11), C (цифра 12), D (цифра 13), E (цифра 14), F (цифра 15).
Перевод 16 --> 10:
A8B7,E16 = 10*163 + 8*162 + 11*161 + 7*160 + 14*16-1 = 10*4096 + 8*256 + 11*16+ + 7 + 14/16 = 43191,87516.
Перевод 10 --> 16 .
7643,410 = 1DDB,6616
7643 ¦ 16 0, ¦ 4 * 16
64 477 ¦ 16 6, ¦ 4 * 16
124 32 29 ¦ 16 6, ¦ 4 * 16
112 157 16 1 6, ¦ 4 * 16
123 144 13 ¦ ............
112 13 ¦
11 ¦
¦
<---------
Перевод 16 --> 2 . Так как 16 = 24 , то в этом случае каждая шестнадцатеричная цифра должна быть представлена двоичной тетрадой.
16-ричное число | Двоичное число | Двоичная тетрада | 16-ричное число | Двоичное число | Двоичная тетрада |
A | |||||
B | |||||
C | |||||
D | |||||
E | |||||
F |
Пример.
D85CA,9B16 = 1101 1000 0101 1100 1010, 1001 10112
Перевод 2 --> 16. В этом случае исходное число нужно разделить влево и вправо от запятой на тетрады, а затем каждую тетраду записать одной шестнадцатеричной цифрой.
Пример.
11¦1011¦1110¦0001¦,0110¦1102 = 3BE1,6C16
Для сокращения вычислений
вместо 10 --> 2 выполняют 10 --> 16 --> 2 ,
вместо 2 --> 10 выполняют 2 --> 16 --> 10 .
Практическая часть
Практическую часть лабораторной работы необходимо выполнить вручную в соответствии со следующими задачами:
1. Выполнить перевод первого числа из десятичной системы в двоичную, из десятичной в восьмеричную и из десятичной в шестнадцатеричную системы.
2. Выполнить перевод второго десятичного числа в двоичную систему, а затем из двоичной – в восьмеричную и шестнадцатеричную.
3. Выполнить сложение первого и второго чисел в двоичной системе.
4. Выполнить вычитание второго числа из первого в двоичной системе.
4. Выполнить перевод третьего числа из шестнадцатеричной системы в двоичную и десятичную.
5. Выполнить сложение второго и третьего чисел в шестнадцатеричной системе.
6. Выполнить вычитание второго числа из третьего в шестнадцатеричной системе.
7. Выполнить сложение первого и второго чисел в восьмеричной системе.
8. Выполнить вычитание второго числа из первого в восьмеричной системе.
Первое число формируется на основе собственной даты рождения, где ДД – день в дате рождения, ММ – месяц, ГГГГ – год.
Результати вычислений по каждому пункту проверить в десятичной системе счисления.
Варианты индивидуальных заданий выбираются из таблицы 1 в соответствии с номером студента в списке группы в журнале преподавателя.
Таблица1.Варианты индивидуальных заданий
№ п/п | Число №1 (10-ное) | Число №2 (10-ное) | Число №3 (16-ное) |
ММГГГГДД | 7915,56 | 3A6C | |
ДДММГГГГ | 9488,36 | 7B6A | |
ММДДГГГГ | 1124,88 | 9E3A | |
ДДГГГГММ | 1246,57 | 5BC1 | |
ГГГГДДММ | 4598,38 | A8B5 | |
ГГГГММДД | 7798,78 | 4D7D | |
ДДММГГГГ | 1648,33 | A1F2 | |
ГГГГДДММ | 4789,35 | 9CC3 | |
ГГГГММДД | 9878,66 | D17E | |
ММДДГГГГ | 7811,32 | B8C3 | |
ГГГГММДД | 5645,19 | F5A3 | |
ГГГГММДД | 3846,77 | 45FF | |
ДДГГГГММ | 4056,66 | AF96 | |
ГГГГДДММ | 3025,98 | 3A3D | |
ММГГГГДД | 4478,11 | 7EF1 | |
ДДММГГГГ | 2121,13 | 73BA | |
ГГГГММДД | 5087,78 | C5D2 | |
ММДДГГГГ | 6476,91 | 83BC | |
ДДГГГГММ | 5713,24 | 5F6A | |
ММГГГГДД | 8653,54 | B69E | |
ДДММГГГГ | 9455,11 | 9A1B | |
ГГГГММДД | 1314,56 | 2AA9 | |
ММДДГГГГ | 2257,66 | F1F5 | |
ДДГГГГММ | 4546,73 | BB83 | |
ММГГГГДД | 7381,19 | 48AC | |
ДДММГГГГ | 6654,12 | 3D9B | |
ГГГГММДД | 7891,63 | 44AE |
1.3 Контрольные вопросы и практические задания:
1. Чем отличаются непозиционные системы счисления от позиционных?
2. Алгоритм перевода чисел из десятичной системы счисления в двоичную и наоборот.
3. Алгоритм перевода чисел из десятичной системы счисления в восьмеричную и наоборот.
4. Алгоритм перевода чисел из десятичной системы счисления в шестнадцатеричную и наоборот.
5. Сложение чисел в двоичной системе.
6. Алгоритм перевода чисел из двоичной системы счисления в шестнадцатеричную и наоборот.
7. Алгоритм перевода чисел из двоичной системы счисления в восьмеричную и наоборот.
8. Сложение чисел в восьмеричной системе.
9. Сложение чисел в шестнадцатеричной системе.
10. Вычитание чисел в двоичной системе.
11. Вычитание чисел в восьмеричной системе.
12. Вычитание чисел в шестнадцатеричной системе.