|
программирование на языке бейсик
|
|
УРОК 5. Шестнадцатеричная система счисления
Так
как двоичное представление довольно громоздко, особенно при больших
количествах чисел, то на практике применяют шестнадцатеричную систему
счисления. Так, число –4 (1111 1111 1111 1100b) представляется как
FFFCh. При просмотре содержимого памяти (так называемый дамп от
слова Dump) или файла обычно используется 16ричная система счисления
для того, чтобы вместить больше информации на экран. Кроме того, люди,
привыкшие к десятичной системе, быстро привыкают к этой системе.
Шестнадцатеричная система
отличается от десятичной тем, что в ней не десять, а шестнадцать цифр,
а так как для их обозначения не хватает десяти цифр, то используются
символы. Вот эти цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F,
где F - последняя цифра имеет значение 15. Как правило, после числа
используют символ H или h от слова Hexadecimal - шестнадцатеричный для
того, чтобы отличить эту систему от десятичной. Например, число 10Н
равно 16 в десятичном исчислении.
Приведем примеры первых чисел этой системы: 1h, 2h, 3h, 4h, 5h, 6h, 7h, 8h, 9h, Ah, Bh, Ch, Dh, Eh, Fh, 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 18h, 19h, 1Ah, 1Bh, 1Ch , 1Dh, 1Eh, 1Fh, 20h, …, где 20h равно 32.
Для
того, чтобы перевести из шестнадцатеричной системы двухзначное число,
например, 5АН, надо произвести следующую операцию: число десятков
умножить на 16 и прибавить единицы. То есть, 5Ah=5х16+10=90, где A=10.
В общем случае шестнадцатеричное число а1а2а3а4 из четырех цифр можно представить в виде: а1х163 + а2х162 + а3х161 + а4х160. Например, 1234h= 1х163 + 2х162 + 3х161 + 4х160
= 4096 + 512 + 48 + 4 = 4660. Для того, чтобы произвести обратное
преобразование из десятичной системы в шестнадцатеричную, необходимо
разделить число на 16, потом записать целое число - частное и остаток
(для двузначных чисел). Например, 90 : 16 = 5, остаток равен 10. Таким
образом, получаемое число равно 5Аh, где А=10. Вряд ли потребуется
умножать или делить шестнадцатеричные числа между собой, поэтому эти
операции здесь не приводятся.
Нижеприведенная таблица позволяет переводить числа из десятичной системы в шестнадцатеричную и обратно.
|
| 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 0A | 0B | 0C | 0D | 0E | 0F | 00 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 10 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 20 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 30 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 40 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 50 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 60 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 70 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | 80 | 128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 | 137 | 138 | 139 | 140 | 141 | 142 | 143 | 90 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | 155 | 156 | 157 | 158 | 159 | A0 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | 174 | 175 | B0 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | C0 | 192 | 193 | 194 | 195 | 196 | 197 | 198 | 199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | D0 | 208 | 209 | 210 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 221 | 222 | 223 | E0 | 224 | 225 | 226 | 227 | 228 | 229 | 230 | 231 | 232 | 233 | 234 | 235 | 236 | 237 | 238 | 239 | F0 | 240 | 241 | 242 | 243 | 244 | 245 | 246 | 247 | 248 | 249 | 250 | 251 | 252 | 253 | 254 | 255 |
Для
того, чтобы перевести число в шестнадцатеричном виде 83h, нужно найти
число в строчке 80 и столбец 3. На их пересечении находится десятичное
число 131. Таким образом, 83h=131. Для обратного перевода нужно найти
десятичное число в таблице и взять числа слева в строке и сверху в
столбце. Так, число 149 находится в строке 90, столбце 05, поэтому его
значение в шестнадцатеричной системе будет 95h
Шестнадцатеричные числа можно, как и двоичные, перевести в десятичную систему, деля его на 16. Приведем пример:
1234 : 16 = 77 (2)
77 : 16 = 4 (13)
4 : 16 = 0 (4)
В правой части написана целая часть результата деления и в скобках остаток. Выпишем цифры остатка и получим 4D2h, где Dh = 13
Для того, чтобы перевести дробную часть, нужно умножить ее на 16. Приведем пример.
0,1125 х 16 = 1,8 (1)
0,8 х 16 = 12,8 (12)
0,8 х 16 = 12,8 (12)…
Как видно образовался цикл, поэтому можно прервать вычисления. Результатом будет число 0,1C(С)h, где Сh = 12.
Операция сложения двух шестнадцатеричных чисел похожа на операцию для десятичных чисел. Приведем пример.
F3h
Вначале
сложим правые цифры Dh (13) и Ah (10). Получим 23, три запишем, а два
запомним в уме, далее сложим 4 + 9 + 2 (из предыдущего столбца) = 15
(или Fh), поэтому запишем F.
Аналогично производится операция вычитания:
4Сh
-
где вначале из Аh (10) вычтем Eh (14), получим – Сh, так как 10 меньше
14, то к десяти прибавим 16 = 26, из которого вычтем (14). Далее из 9 –
4 – 1 (взяли для единиц) = 4.
Умножение
и деление проводится также, как и десятичной системе. Для того, чтобы
легче было проводить эти действия, лучше воспользоваться таблицей
умножения, которая приведена ниже:
|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | 1 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | 2 | 2 | 4 | 6 | 8 | A | C | E | 10 | 12 | 14 | 16 | 18 | 1A | 1C | 1E | 3 | 3 | 6 | 9 | C | F | 12 | 15 | 18 | 1B | 1E | 21 | 24 | 27 | 2A | 2D | 4 | 4 | 8 | C | 10 | 14 | 18 | 1C | 20 | 24 | 28 | 2C | 30 | 34 | 38 | 3C | 5 | 5 | A | F | 14 | 19 | 1E | 23 | 28 | 2D | 32 | 37 | 3C | 41 | 46 | 4B | 6 | 6 | C | 12 | 18 | 1E | 24 | 2A | 30 | 36 | 3C | 42 | 48 | 4E | 54 | 5A | 7 | 7 | E | 15 | 1C | 23 | 2A | 31 | 38 | 3F | 46 | 4D | 54 | 5B | 62 | 69 | 8 | 8 | 10 | 18 | 20 | 28 | 30 | 38 | 40 | 48 | 50 | 58 | 60 | 68 | 70 | 78 | 9 | 9 | 12 | 1B | 24 | 2D | 36 | 3F | 48 | 51 | 5A | 63 | 6C | 75 | 7E | 87 | A | A | 14 | 1E | 28 | 32 | 3C | 46 | 50 | 5A | 64 | 6E | 78 | 82 | 8C | 96 | B | B | 16 | 21 | 2C | 37 | 42 | 4D | 58 | 63 | 6E | 79 | 84 | 8F | 9A | A5 | C | C | 18 | 24 | 30 | 3C | 48 | 54 | 60 | 6C | 78 | 84 | 90 | 9C | A8 | B4 | D | D | 1A | 27 | 34 | 41 | 4E | 5B | 68 | 75 | 82 | 8F | 9C | A9 | B6 | C3 | E | E | 1C | 2A | 38 | 46 | 54 | 62 | 70 | 7E | 8C | 9A | A8 | B6 | C4 | D2 | F | F | 1E | 2D | 3C | 4B | 5A | 69 | 78 | 87 | 96 | A5 | B4 | C3 | D2 | E1 |
Операция
умножения довольно просто выполняется при использовании этой таблицы.
Например, при умножении чисел 4Аh x Ch сначала выполним операцию
умножения для 4h х Сh = 30h и затем Аh х Сh = 78h. Для этого нужно найти числа, находящиеся на пересечении строк и столбцов чисел 4 и С, а затем А и С. Затем нужно сложить 300h и 78h, в результате получим 378h.
Для
операции деления нужно найти число в строке, в которой слева находится
делитель или близкое к нему число. Например, при делении 378h на Сh,
найдем в строке, где слева находится С, максимальное число, которое не
превышает 37 – это будет 30. Запишем верхнее число, которое находится в
этом столбце, это будет 4. 37h – 30h = 7h. Далее найдем в этой же строке число 78 и запишем верхнее значение столбца, где оно находится. Получим А, значит, наше число 4Ah.
Операции
умножения и деления применяются на практике крайне редко, гораздо проще
написать небольшую программу, которая бы давала результат таких
операций.
При
просмотре содержимого памяти, необходимо иметь в виду, что
представление числа имеет еще одну особенность, при которой в начале
области находятся два младших разряда, потом старшие. Тогда при
просмотре памяти при помощи программы Debug окажется, что число –4 (или
FFFCh) будет представлено в виде: сначала FCh, потом FFh.
Иногда
может встретиться ситуация, когда необходимо перевести число из
двоичной системы счисления в шестнадцатеричную и наоборот. Эта операция
выполняется довольно просто, для чего можно использовать следующую
таблицу:
|
0h | 1h | 2h | 3h | 4h | 5h | 6h | 7h | 0000b | 0001b | 0010b | 0011b | 0100b | 0101b | 0110b | 0111b | 8h | 9h | Ah | Bh | Ch | Dh | Eh | Fh | 1000b | 1001b | 1010b | 1011b | 1100b | 1101b | 1110b | 1111b |
Если имеется число 5Аh, то вместо 5 поставим значение 0101, взятое из таблицы, а вместо А – 1010, а в конце символ – b, получим 0101 1010b. Аналогично наоборот, если имеется число 1110 0110b, то найдем соответствие первой четверке чисел 1110 – Е, второй 0110 – 6, получим число Е6h.
Задачи.
1. Переведите в шестнадцатеричную систему счисления: а) 123, б) 324 в) 63 г) 14 д) 1024
2. Переведите в десятичную систему счисления: а) 24h б)1Аh, в) 66h г) А5h, д) 77h
3. Выполните операции: а) 23h-1Ah, б) 62h+1Ch в) 11hx3Ah, г) 4Dhx22h д) 23h:5h
4. Переведите числа в двоичную систему счисления: а) 10h б) 44h в) А7h г) 8Сh д) 99h
5. Переведите двоичные числа в шестнадцатеричную систему счисления: а) 0001 1000b, б) 0110 1100b, в) 0111 0111b, г) 1001 1011b д) 0010 0011b
|
О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О
|
|
Информация
данного сайта предназначена для бесплатного изучения персонального
компьютера. Можно копировать, передавать материалы другим лицам.
Запрещается
использовать материалы для получения личной финансовой выгоды, а также
размещать на сайтах в интернете.
|