|
программирование на языке бейсик
|
|
УРОК 2. Двоичная система счисления
Одной
из важных систем счисления при работе на компьютере является двоичная
система счисления. Однако, из-за большого количества цифр она трудно
воспринимаема. Поэтому, чтобы проще было работать на компьютере, вместо
нее применяется шестнадцатеричная система, которая будет рассмотрена
далее.
Основание
для двоичной системы являются две цифры – 0 и 1 (или так называемый
бит). При помощи одной цифры можно представить два числа – 0 и 1. При
помощи двух цифр - четыре (0 - 00, 1 - 01, 2 - 10, 3 - 11), три бита -
восемь, четыре – шестнадцать, восемь – 256 значений и так далее. Для
того, чтобы различить числа, написанные в разных системах счисления,
справа от значения указывается символ системы. Это применяется для всех
систем, кроме десятичной. Например, указанные числа 0 и 1 записываются
как 02 и 12 , где 2 – основание системы.
Для
некоторых систем, которые имеют широкое распространение, могут
использоваться специальные символы, например, для двоичной системы
используется символ b (от слова binary – двоичный), а для
шестнадцатеричной – Н (от слова Hexadecimal) – шестнадцатеричный,
причем можно указывать как строчный символ, так и прописной. Таким
образом, два значения, которые были указаны выше, правильнее записать
0b и 1b или 0В и 1В. Этим обозначением и мы будем пользоваться в
дальнейшем.
Двоичная
система используется не только в компьютере, но и известна в более
ранние времена. Так, азбука Морзе использует два символа – точка и
тире, при помощи которых можно выразить все буквы алфавита. Кроме того,
в 19 веке возникла Булева алгебра, которая использует двоичные числа, а
точнее два значения «истина» (1) и «ложь» (0). С этими двумя значениями
существует несколько операций, часть из которых применяется и в
программировании. Это операция НЕ, И, ИЛИ и некоторые другие, которые
будут рассмотрены позднее.
Прежде чем перейти к операциям с двоичными числами, представим первые двоичные числа и их соответствие десятичным:
|
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 0b | 1b | 10b | 11b | 100b | 101b | 110b | 111b | 1000b | 1001b | 1010b |
Как
видно из приведенной таблицы, все числа указаны без лидирующих нулей,
то есть, число 10b содержит две цифры, а не три, как можно было бы
написать: 010b. Иногда может потребоваться написать лидирующие нули,
например, когда переписываются значение нулей и единиц из
четырехзначных полей. Например, при просмотре содержимого памяти в
двоичном виде для легкости прочтения используются поля по четыре цифры
и содержимое может быть представлено в виде:
0001 1011 1001 0000 0000 0000 1111 1111
0101 1010 1111 0000 1111 0101 0111 1110
Если
в этой записи убрать лидирующие нули, то непонятно будет какое число
выведено на экран. В других случаях лидирующие нули не пишутся, чем мы
и будем в дальнейшем руководствоваться.
Перевод числа из двоичной системы в десятичную.
Рассмотрим число 1001b. Оно равно числу 9 в десятичной системе
счисления. Каким образом, не имея таблицы соответствия об этом узнать?
Как ранее показано, каждое число имеет свое представление, для этого
числа оно равно 1001b = 1 х 23 + 0 х 22 + 0х21 + 1 х 20
= 1х8 + 0х4 + 0х2 + 1х1 = 8+1 = 9. В общем случае, любое число можно
выразить в виде суммы степеней двойки и подсчитать результат.
Перевод числа из десятичной в двоичную. Для
перевода из десятичной системы счисления в двоичную можно делить
исходное число на два и записывать остаток. Так, для числа 2003:
2003 : 2 = 1001 (1)
1001 : 2 = 500 (1)
500 : 2 = 250 (0)
250 : 2 = 125 (0)
125 : 2 = 62 (1)
62 : 2 = 31 (0)
31 : 2 = 15 (1)
15 : 2 = 7 (1)
7 : 2 = 3 (1)
3 : 2 = 1 (1)
1 : 2 = 0 (1)
Запишем в обратном порядке остатки, полученное число равно - 11111010011b.
При
другом способе перевода из десятичной системы в двоичную также
используются степени двойки в обратном порядке. Приведем пример. Для
числа 9 подберем ближайшую степень двойки. Это будет 23 = 8. Вычтем из 9 полученное число: 9 - 8 = 1. Таким образом, число 9 = 1х23 + 0х22 + 0х21 + 1х 23 = 1001b.
Для
того, чтобы было проще переводить число из десятичной системы в
двоичную, приведем следующую таблицу, в которой указаны степени двойки:
|
21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 210 | 2 | 4 | 8 | 16 | 32 | 64 | 128 | 256 | 512 | 1024 | 211 | 212 | 213 | 214 | 215 | 216 | 217 | 218 | 219 | 220 | 2048 | 4096 | 8192 | 16384 | 32768 | 65536 | 131072 | 262144 | 524288 | 1048576 |
Предположим, нам нужно перевести число 2003 в двоичный вид.
Ближайшее
число, которое меньше данного, является 1024, поэтому запишем 1 и из
2003 – 1024 = 979. Следующее число 512 не больше полученного остатка,
поэтому запишем еще одну единицу (получим 11) и получим новый остаток
979 – 512 = 467. Далее запишем единицу (111) и получим остаток 467-256
= 211, запишем единицу (1111), получим остаток 211-128 = 83, запишем
единицу (11111), получим остаток 83-64 = 19. Следующая степень двойки –
32 больше, чем остаток, поэтому запишем ноль (111110), далее запишем
единицу (1111101), получим остаток 19-16 = 3. Следующие две степени
двойки больше остатка (8 и 4), запишем два нуля (111110100), далее
запишем единицу (111111101001) и получим остаток 3-2=1 и окончим
вычисления, записав единицу. Полученное число равно – 11111010011b. Или
2003 = 1х1024 + 1х512 + 1х256 + 1х128 + 1х64 + 0х32 + 1х16 + 0х8 + 0х4
+ 1х2 + 1х1 = 1024 + 512 + 256 + 128 + 64 + 16 + 2 + 1.
Для
перевода двоичных значений дробной части числа в десятичную систему,
нужно умножать ее на два и смотреть на целое число, которое получается
при этом. Например, переведем число 0,245:
0,245 х 2 = 0,49 (0)
0,49 х 2 = 0,98 (0)
0,98 х 2 = 1,96 (1)
0,96 х 2 = 1,92 (1)
0,92 х 2 = 1,84 (1)
0,84 х 2 = 1,68 (1)
0,68 х 2 = 1,36 (1)
0,36 х 2 = 0,72 (0) ….
В
правой части каждой строчки находится в скобках целая часть числа, а
дробная переносится на следующую строчку. Как правило, не требуется
вычислять много значений после запятой, поэтому перепишем полученный
результат, не проводя дальнейших операций. Это будет 0,00111110b…
При
работе с компьютером на практике производится перевод из одной системы
счисления в другую целых чисел, а не дробной их части. Тем не менее,
если потребуется перевести из двоичной системы счисления в десятичную,
то для числа 1110,01b можно использовать формулу: 1х23 + 1х22 + 1х21 + 0х 20 + 0х2-1 + 1х2-2 = 8 + 4 + 2 + 0 + 0 + ¼ = 14¼.
Задачи.
1. Переведите из двоичного вида в десятичный следующие числа:
а) 1001В б) 11В в) 1111 0001В г) 1110 1010В д) 10 0001В е) 101 0101В ж) 11 0000В з) 11 1111В.
2. Переведите из десятичной системы счисления в двоичную следующие числа:
а) 3 б) 10 в) 122 г) 129 д) 1020 е) 24000 ж) 12348 з) 78
|
О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О
|
|
Информация
данного сайта предназначена для бесплатного изучения персонального
компьютера. Можно копировать, передавать материалы другим лицам.
Запрещается
использовать материалы для получения личной финансовой выгоды, а также
размещать на сайтах в интернете.
|