Двоичная система счисления
Вопреки распространённому заблуждению, двоичная система счисления была придумана не инженерами-конструкторами ЭВМ, а математиками и философами задолго до появления компьютеров, ещё в 17 веке. Великий немецкий учёный Лейбниц считал:
«Вычисление с помощью двоек... является для науки основным и порождает новые открытия... При сведении чисел к простейшим началам, каковы 0 и 1, везде появляется чудесный порядок».
Впервые двоичная система появилась в 1605 году в работах Томаса Хэрриота (он изобрёл знаки >
и ). Позже двоичная система была забыта, и только в 1936-1938 гг. американский инженер и математик Клод Шеннон нашёл замечательные применения двоичной системы при конструировании электронных схем.
Двоичная система удобна для компьютера, но неудобна для человека - числа получаются очень длинными и их трудно записывать и запоминать. Она используется, как правило, для «внутренних нужд» компьютера. Двоичная система счисления позволяет достаточно просто организовать числа, и для того, чтобы представить число в ЭВМ, достаточно иметь устройство, которое обладает только двумя устойчивыми состояниями, одно из которых соответствует логической «1», а другое - «0». Таких элементов достаточно много: намагниченный или не намагниченный сердечник, открытый или закрытый транзистор и др. Для десятичной системы счисления понадобилось бы, к примеру, устройство с 10 устойчивыми состояниями. Это значительно усложнило бы схему ЭВМ.
Другим важным достоинством двоичной системы является простота вычислений. Рассмотрим, как выполняются арифметические действия в двоичной системе. Для этого проведём анализ таблиц сложения и умножения в двоичной системе.
Примеры сложения двоичных чисел:
Примеры умножения двоичных чисел:
Следует обратить внимание на аналогию в правилах выполнения арифметических действий в двоичной и десятичной системах счисления: например, если при сложении двух двоичных чисел сумма цифр окажется больше единицы, то возникает перенос в старший разряд.
Вычитание двоичных чисел осуществляется следующим образом: Вычитаемое число преобразуется в дополнительный код
. Например, если надо вычесть из числа 10110 число 01000, то вычитаемое 01000 преобразуется в дополнительный код так: в числе вместо 0 пишется 1, а вместо 1 пишется 0, следовательно, получим из вычитаемого число 10111. Затем преобразованное число складывается с уменьшаемым:
И вычитаемое, и уменьшаемое состоят из 5 разрядов, а результат суммы - число 6-разрядное. Старший разряд суммы отнимается от числа и складывается с результатом:
Такой приём часто используется в практике вычислений. Например, в десятичной системе числа можно вычесть так. Допустим требуется найти разность 842-623. Представим число 623 в дополнительный вид, отняв его от 1000. Получим число 377. Затем найдём сумму: 842+377=1219. Отбросим перенос в старший разряд и получим число 219. Мы нашли решение этого примера.
Деление двоичных чисел выполняется аналогично делению десятичных чисел. Вычитание и умножение в процессе деления необходимо выполнять рассмотренными ранее способами.
Важнейшее преимущество двоичной арифметики заключается в том, что она позволяет все арифметические действия свести к одному - сложению, а это значительно упрощает устройство процессора ЭВМ. Отметим недостаток, характерный для двоичной системы счисления - значительный рост числа разрядов при увеличении числа. Но все достоинства этой системы делают такой недостаток не столь существенным.
Двоичная система счисления - позиционная система счисления с основанием 2.
Двоичные цифры
В этой системе счисления числа записываются с помощью двух символов (0 и 1).
История
- Полный набор из 8 триграмм и 64 гексаграмм , аналог 3-битных и 6-битных цифр, был известен в древнем Китае в классических текстах книги Перемен . Порядок гексаграмм в книге Перемен , расположенных в соответствии со значениями соответствующих двоичных цифр (от 0 до 63), и метод их получения был разработан китайским учёным и философом Шао Юн в XI веке . Однако нет доказательств, свидетельствующих о том, что Шао Юн понимал правила двоичной арифметики, располагая двухсимвольные кортежи в лексикографическом порядке .
- Наборы, представляющие собой комбинации двоичных цифр, использовались африканцами в традиционных гаданиях (таких как Ифа) наряду со средневековой геомантией .
- В 1854 году английский математик Джордж Буль опубликовал знаковую работу, описывающую алгебраические системы применительно к логике , которая в настоящее время известна как Булева алгебра или алгебра логики . Его логическому исчислению было суждено сыграть важную роль в разработке современных цифровых электронных схем.
- В 1937 году Клод Шеннон представил к защите кандидатскую диссертацию Символический анализ релейных и переключательных схем в MIT , в которой булева алгебра и двоичная арифметика были использованы применительно к электронным реле и переключателям. На диссертации Шеннона по существу основана вся современная цифровая техника.
- В ноябре 1937 года Джордж Штибиц , впоследствии работавший в Bell Labs , создал на базе реле компьютер «Model K» (от англ. «K itchen», кухня, где производилась сборка), который выполнял двоичное сложение. В конце 1938 года Bell Labs развернула исследовательскую программу во главе со Штибицом. Созданный под его руководством компьютер, завершённый 8 января 1940 года, умел выполнять операции с комплексными числами . Во время демонстрации на конференции American Mathematical Society в Дартмутском колледже 11 сентября 1940 года Штибиц продемонстрировал возможность посылки команд удалённому калькулятору комплексных чисел по телефонной линии с использованием телетайпа . Это была первая попытка использования удалённой вычислительной машины посредством телефонной линии. Среди участников конференции, бывших свидетелями демонстрации, были Джон фон Нейман , Джон Мокли и Норберт Винер , впоследствии писавшие об этом в своих мемуарах.
Запись двоичных чисел
Двоичная система счисления является комбинацией двоичной системы кодирования и показательной весовой функции с основанием равным 2. Положительные целые числа (без знака) записываются в виде:
Количество записываемых кодов (чисел) зависит от основания системы кодирования - c , определяется в комбинаторике и равно числу размещений с повторениями :
Количество записываемых кодов (чисел) от основания показательной функции - b
не зависит.
Основание показательной функции - b
определяет диапазон представляемых числами x 2,b
величин и разреженность представляемых чисел на числовой оси.
Целые числа являются частными суммами степенного ряда :
в котором коэффициенты a n берутся из множества R=a{0,1} , X=2 , n=k , а верхний предел в частных суммах ограничен с до - n-1 .
Целые числа со знаком записываются в виде:
Дробные числа записываются в виде:
Следует отметить, что число может быть записано в двоичном коде , а система счисления при этом может быть не двоичной, а с другим основанием. Пример: двоично-десятичное кодирование, в котором десятичные цифры записываются в двоичном виде, а система счисления - десятичная.
Сложение, вычитание и умножение двоичных чисел
Таблица сложения
Таблица вычитания
Пример умножения «столбиком» (14 × 5 = 70):
Начиная с цифры 1 все цифры умножаются на два. Точка, которая стоит после 1, называется двоичной точкой.
Преобразование двоичных чисел в десятичные
Допустим, вам дано двоичное число 110001. Для перевода в десятичное просто запишите его справа налево как сумму по разрядам следующим образом:
.Можно записать это в виде таблицы следующим образом:
512 | 256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
1 | 1 | 0 | 0 | 0 | 1 | ||||
+32 | +16 | +1 |
Точно так же, начиная с двоичной точки, двигайтесь справа налево. Под каждой двоичной единицей напишите её эквивалент в строчке ниже. Сложите получившиеся десятичные числа.
Таким образом, двоичное число 110001 равнозначно десятичному 49.
Преобразование методом Горнера
Для того, чтобы преобразовывать числа из двоичной в десятичную систему данным методом, надо суммировать цифры слева направо, умножая ранее полученный результат на основу системы (в данном случае 2). Например, двоичное число 1011011 переводится в десятичную систему так: 0*2+1
=1 >> 1*2+0
=2 >> 2*2+1
=5 >> 5*2+1
=11 >> 11*2+0
=22 >> 22*2+1
=45 >> 45*2+1
=91 То есть в десятичной системе это число будет записано как 91. Или число 101111 переводится в десятичную систему так: 0*2+1
=1 >> 1*2+0
=2 >> 2*2+1
=5 >> 5*2+1
=11 >> 11*2+1
=23 >> 23*2+1
=47 То есть в десятичной системе это число будет записано как 47. Перевод дробных чисел методом Горнера 1) 0,1101 2 =0,X 10 (рассматриваем цифры в обратном порядке)
1:2=0,5
0,5+0=0,5
0,5:2=0,25
0,25+1=1,25
1,25:2=0,625
0,625+1=1,625
1,625:2=0,8125
Ответ: 0,1101 2 = 0,8125 10
2) 0,356 8 =0,X 10 (рассматриваем цифры в обратном порядке)
6:8=0,75
0,75+5=5,75
5,75:8=0,71875
0,71875+3=3,71875
3,71875:8=0,46484375
Ответ: 0,356 8 =0,46484375 10
3) 0,A6E 16 =0,X 10 (рассматриваем цифры в обратном порядке)
14:16=0,875
0,875+6=6,875
6,875:16=0,4296875
0,4296875+10=10,4296875
10,4296875:16=0,65185546875
Ответ: 0,A6E 16 =0,65185546875 10
Преобразование десятичных чисел в двоичные
Допустим, нам нужно перевести число 19 в двоичное. Вы можете воспользоваться следующей процедурой:
19 /2 = 9 с остатком 1 9 /2 = 4 c остатком 1 4 /2 = 2 без остатка 0 2 /2 = 1 без остатка 0 1 /2 = 0 с остатком 1
Итак, мы делим каждое частное на 2 и записываем остаток в конец двоичной записи. Продолжаем деление до тех пор, пока в частном не будет 0. Результат записываем справа налево. То есть нижнее число будет самым левым и.т.д. В результате получаем число 19 в двоичной записи: 10011.
Преобразование дробных двоичных чисел в десятичные
Нужно перевести число 1011010,101 в десятичную систему. Запишем это число следующим образом:
Или по таблице:
64 | 32 | 16 | 8 | 4 | 2 | 1 | 0.5 | 0.25 | 0.125 |
1 | 0 | 1 | 1 | 0 | 1 | 0. | .1 | 0 | 1 |
+64 | +16 | +8 | +2 | +0.5 | +0.125 |
Преобразование дробных десятичных чисел в двоичные
Перевод дробного числа из десятичной системы счисления в двоичную осуществляется по следующему алгоритму:
- Вначале переводится целая часть десятичной дроби в двоичную систему счисления;
- Затем дробная часть десятичной дроби умножается на основание двоичной системы счисления;
- В полученном произведении выделяется целая часть, которая принимается в качестве значения первого после запятой разряда числа в двоичной системе счисления;
- Алгоритм завершается, если дробная часть полученного произведения равна нулю или если достигнута требуемая точность вычислений. В противном случае вычисления продолжаются с предыдущего шага.
Пример: Требуется перевести дробное десятичное число 206,116 в дробное двоичное число.
Перевод целой части дает 206 10 =11001110 2 по ранее описанным алгоритмам; дробную часть умножаем на основание 2, занося целые части произведения в разряды после запятой искомого дробного двоичного числа:
0,116 2 = 0,232
0,232 2 = 0,464
0,464 2 = 0,928
0,928 2 = 1,856
0,856 2 = 1,712
0,712 2 = 1,424
0,424 2 = 0,848
0,848 2 = 1,696
0,696 2 = 1,392
0,392 2 = 0,784
и т. д.
Получим: 206,116 10 =11001110,0001110110 2
Применения
В цифровых устройствах
Двоичная система используется в цифровых устройствах , поскольку является наиболее простой и соответствует требованиям:
В цифровой электронике одному двоичному разряду в двоичной системе счисления соответствует (очевидно) один двоичный разряд двоичного регистра , то есть двоичный триггер с двумя состояниями (0,1).
В английской системе мер
При указании линейных размеров в дюймах по традиции используют двоичные дроби, а не десятичные, например: 5¾″, 7 15 / 16 ″, 3 11 / 32 ″ и т. д.
- На фронтоне здания (бывшего Вычислительного Центра СО АН СССР) в Новосибирском Академгородке присутствует двоичное число 1000110 (70 10), что соответствует дате постройки здания ( год).
См. также
- Двоичное кодирование
Примеры чисел-степеней двойки
Степень | Значение |
---|---|
0 | |
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | 8192 |
14 | 16384 |
15 | 32768 |
16 | |
17 | 131072 |
18 | 262144 |
19 | 524288 |
20 | 1048576 |
21 | 2097152 |
22 | 4194304 |
23 | 8388608 |
24 | |
25 | 33554432 |
26 | 67108864 |
27 | 134217728 |
28 | 268435456 |
29 | 536870912 |
30 | 1073741824 |
31 | 2147483648 |
32 | 4294967296 |
33 | 8589934592 |
34 | 17179869184 |
35 | 34359738368 |
36 | 68719476736 |
37 | 137438953472 |
38 | 274877906944 |
39 | 549755813888 |
40 | 1099511627776 |
41 | 2199023255552 |
42 | 4398046511104 |
43 | 8796093022208 |
44 | 17592186044416 |
45 | 35184372088832 |
46 | 70368744177664 |
47 | 140737488355328 |
48 | 281474976710656 |
49 | 562949953421312 |
50 | 1125899906842624 |
51 | 2251799813685248 |
Примечания
- Sanchez, Julio & Canton, Maria P. (2007), «Microcontroller programming: the microchip PIC» , Boca Raton, Florida: CRC Press, с. 37, ISBN 0-8493-7189-9
- W. S. Anglin and J. Lambek, The Heritage of Thales , Springer, 1995,
С помощю этого онлайн калькулятора можно перевести целые и дробные числа из одной системы счисления в другую. Дается подробное решение с пояснениями. Для перевода введите исходное число, задайте основание сисемы счисления исходного числа, задайте основание системы счисления, в которую нужно перевести число и нажмите на кнопку "Перевести". Теоретическую часть и численные примеры смотрите ниже.
Результат уже получен!
Перевод целых и дробных чисел из одной системы счисления в любую другую − теория, примеры и решения
Существуют позиционные и не позиционные системы счисления. Арабская система счисления, которым мы пользуемся в повседневной жизни, является позиционной, а римская − нет. В позиционных системах счисления позиция числа однозначно определяет величину числа. Рассмотрим это на примере числа 6372 в десятичном системе счисления. Пронумеруем это число справа налево начиная с нуля:
Тогда число 6372 можно представить в следующем виде:
6372=6000+300+70+2 =6·10 3 +3·10 2 +7·10 1 +2·10 0 .
Число 10 определяет систему счисления (в данном случае это 10). В качестве степеней взяты значения позиции данного числа.
Рассмотрим вещественное десятичное число 1287.923. Пронумеруем его начиная с нуля позиции числа от десятичной точки влево и вправо:
Тогда число 1287.923 можно представить в виде:
1287.923 =1000+200+80 +7+0.9+0.02+0.003 = 1·10 3 +2·10 2 +8·10 1 +7·10 0 +9·10 -1 +2·10 -2 +3·10 -3 .
В общем случае формулу можно представить в следующем виде:
Ц n ·s n +Ц n-1 ·s n-1 +...+Ц 1 ·s 1 +Ц 0 ·s 0 +Д -1 ·s -1 +Д -2 ·s -2 +...+Д -k ·s -k
где Ц n -целое число в позиции n , Д -k - дробное число в позиции (-k), s - система счисления.
Несколько слов о системах счисления.Число в десятичной системе счисления состоит из множества цифр {0,1,2,3,4,5,6,7,8,9}, в восьмеричной системе счисления - из множества цифр {0,1,2,3,4,5,6,7}, в двоичной системе счисления - из множества цифр {0,1}, в шестнадцатеричной системе счисления - из множества цифр {0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F}, где A,B,C,D,E,F соответствуют числам 10,11,12,13,14,15.В таблице Таб.1 представлены числа в разных системах счисления.
Таблица 1 | |||
---|---|---|---|
Система счисления | |||
10 | 2 | 8 | 16 |
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 |
Перевод чисел из одной системы счисления в другую
Для перевода чисел с одной системы счисления в другую, проще всего сначала перевести число в десятичную систему счисления, а затем, из десятичной системы счисления перевести в требуемую систему счисления.
Перевод чисел из любой системы счисления в десятичную систему счисления
С помощью формулы (1) можно перевести числа из любой системы счисления в десятичную систему счисления.
Пример 1. Переводить число 1011101.001 из двоичной системы счисления (СС) в десятичную СС. Решение:
1 ·2 6 +0 ·2 5 +1 ·2 4 +1 ·2 3 +1 ·2 2 +0 ·2 1 +1 ·2 0 +0 ·2 -1 +0 ·2 -2 +1 ·2 -3 =64+16+8+4+1+1/8=93.125
Пример 2. Переводить число 1011101.001 из восьмеричной системы счисления (СС) в десятичную СС. Решение:
Пример 3 . Переводить число AB572.CDF из шестнадцатеричной системы счисления в десятичную СС. Решение:
Здесь A -заменен на 10, B - на 11, C - на 12, F - на 15.
Перевод чисел из десятичной системы счисления в другую систему счисления
Для перевода чисел из десятичной системы счисления в другую систему счисления нужно переводить отдельно целую часть числа и дробную часть числа.
Целую часть числа переводится из десятичной СС в другую систему счисления - последовательным делением целой части числа на основание системы счисления (для двоичной СС - на 2, для 8-ичной СС - на 8, для 16-ичной - на 16 и т.д.) до получения целого остатка, меньше, чем основание СС.
Пример 4 . Переведем число 159 из десятичной СС в двоичную СС:
159 | 2 | ||||||
158 | 79 | 2 | |||||
1 | 78 | 39 | 2 | ||||
1 | 38 | 19 | 2 | ||||
1 | 18 | 9 | 2 | ||||
1 | 8 | 4 | 2 | ||||
1 | 4 | 2 | 2 | ||||
0 | 2 | 1 | |||||
0 |
Как видно из Рис. 1, число 159 при делении на 2 дает частное 79 и остаток 1. Далее число 79 при делении на 2 дает частное 39 и остаток 1 и т.д. В результате построив число из остатков деления (справа налево) получим число в двоичной СС: 10011111 . Следовательно можно записать:
159 10 =10011111 2 .
Пример 5 . Переведем число 615 из десятичной СС в восьмеричную СС.
615 | 8 | ||
608 | 76 | 8 | |
7 | 72 | 9 | 8 |
4 | 8 | 1 | |
1 |
При приведении числа из десятичной СС в восьмеричную СС, нужно последовательно делить число на 8, пока не получится целый остаток меньшее, чем 8. В результате построив число из остатков деления (справа налево) получим число в восьмеричной СС: 1147 (см. Рис. 2). Следовательно можно записать:
615 10 =1147 8 .
Пример 6 . Переведем число 19673 из десятичной системы счисления в шестнадцатеричную СС.
19673 | 16 | ||
19664 | 1229 | 16 | |
9 | 1216 | 76 | 16 |
13 | 64 | 4 | |
12 |
Как видно из рисунка Рис.3, последовательным делением числа 19673 на 16 получили остатки 4, 12, 13, 9. В шестнадцатеричной системе счисления числе 12 соответствует С, числе 13 - D. Следовательно наше шестнадцатеричное число - это 4CD9.
Для перевода правильных десятичных дробей (вещественное число с нулевой целой частью) в систему счисления с основанием s необходимо данное число последовательно умножить на s до тех пор, пока в дробной части не получится чистый нуль, или же не получим требуемое количество разрядов. Если при умножении получится число с целой частью, отличное от нуля, то эту целую часть не учитывать (они последовательно зачисливаются в результат).
Рассмотрим вышеизложенное на примерах.
Пример 7 . Переведем число 0.214 из десятичной системы счисления в двоичную СС.
0.214 | ||
x | 2 | |
0 | 0.428 | |
x | 2 | |
0 | 0.856 | |
x | 2 | |
1 | 0.712 | |
x | 2 | |
1 | 0.424 | |
x | 2 | |
0 | 0.848 | |
x | 2 | |
1 | 0.696 | |
x | 2 | |
1 | 0.392 |
Как видно из Рис.4, число 0.214 последовательно умножается на 2. Если в результате умножения получится число с целой частью, отличное от нуля, то целая часть записывается отдельно (слева от числа), а число записывается с нулевой целой частью. Если же при умножении получиться число с нулевой целой частью, то слева от нее записывается нуль. Процесс умножения продолжается до тех пор, пока в дробной части не получится чистый нуль или же не получим требуемое количество разрядов. Записывая жирные числа (Рис.4) сверху вниз получим требуемое число в двоичной системе счисления: 0.0011011 .
Следовательно можно записать:
0.214 10 =0.0011011 2 .
Пример 8 . Переведем число 0.125 из десятичной системы счисления в двоичную СС.
0.125 | ||
x | 2 | |
0 | 0.25 | |
x | 2 | |
0 | 0.5 | |
x | 2 | |
1 | 0.0 |
Для приведения числа 0.125 из десятичной СС в двоичную, данное число последовательно умножается на 2. В третьем этапе получилось 0. Следовательно, получился следующий результат:
0.125 10 =0.001 2 .
Пример 9 . Переведем число 0.214 из десятичной системы счисления в шестнадцатеричную СС.
0.214 | ||
x | 16 | |
3 | 0.424 | |
x | 16 | |
6 | 0.784 | |
x | 16 | |
12 | 0.544 | |
x | 16 | |
8 | 0.704 | |
x | 16 | |
11 | 0.264 | |
x | 16 | |
4 | 0.224 |
Следуя примерам 4 и 5 получаем числа 3, 6, 12, 8, 11, 4. Но в шестнадцатеричной СС числам 12 и 11 соответствуют числа C и B. Следовательно имеем:
0.214 10 =0.36C8B4 16 .
Пример 10 . Переведем число 0.512 из десятичной системы счисления в восьмеричную СС.
0.512 | ||
x | 8 | |
4 | 0.096 | |
x | 8 | |
0 | 0.768 | |
x | 8 | |
6 | 0.144 | |
x | 8 | |
1 | 0.152 | |
x | 8 | |
1 | 0.216 | |
x | 8 | |
1 | 0.728 |
Получили:
0.512 10 =0.406111 8 .
Пример 11 . Переведем число 159.125 из десятичной системы счисления в двоичную СС. Для этого переведем отдельно целую часть числа (Пример 4) и дробную часть числа (Пример 8). Далее объединяя эти результаты получим:
159.125 10 =10011111.001 2 .
Пример 12 . Переведем число 19673.214 из десятичной системы счисления в шестнадцатеричную СС. Для этого переведем отдельно целую часть числа (Пример 6) и дробную часть числа (Пример 9). Далее объединяя эти результаты получим.
Впервые позиционная система счисления возникла в древнем Вавилоне. В Индии система работает в виде
позиционной десятичной нумерации с использованием нуля, у индусов данную систему чисел
позаимствовала арабская нация, у них, в свою очередь, взяли европейцы. В Европе эту систему стали
называть арабской.
Позиционная система — значение всех цифр зависит от позиции (разряда) данной цифры в числе.
Примеры, стандартная 10-я система счисления - это позиционная система. Допустим дано число 453.
Цифра 4 обозначает сотни и соответствует числу 400, 5 — кол-во десятков и соответствует значению 50,
а 3 — единицы и значению 3. Легко заметить, что с увеличением разряда увеличивается значение.
Таким образом, заданное число запишем в виде суммы 400+50+3=453.
Двоичная система счисления.
Здесь только 2 цифры - это 0 и 1. Основание двоичной системы - число 2.
Цифра, которая находится с самого края справа, указывает количество единиц, вторая цифра -
Во всех разрядах возможна лишь одна цифра — или нуль, или единица.
С помощью двоичной системы счисления возможно закодировать всякое натуральное число, представив
это число в виде последовательности нулей и единиц.
Пример: 10112 = 1*2 3 + 0*2*2+1*2 1 +1*2 0 =1*8 + 1*2+1=1110
Двоичную систему счисления, как и десятичную систему счисления , зачастую используют в вычислительной
технике. Текст и числа компьютер хранит в своей памяти в двоичном коде и программным способом преобразует
в изображение на экране.
Сложение, вычитание и умножение двоичных чисел.
Таблица сложения в двоичной системе счисления:
10 (перенос в старший разряд) |
Таблица вычитания в двоичной системе счисления:
(заём из старшего разряда) 1 |
Пример сложения «столбиком» (14 10 + 5 10 = 19 10 или 1110 2 + 101 2 = 10011 2):
+ | 1 | 1 | 1 | 0 | |
1 | 0 | 1 | |||
1 | 0 | 0 | 1 | 1 |
Таблица умножения в двоичной системе счисления:
Пример умножения «столбиком» (14 10 * 5 10 = 70 10 или 1110 2 * 101 2 = 1000110 2):
* | 1 | 1 | 1 | 0 | |||
1 | 0 | 1 | |||||
+ | 1 | 1 | 1 | 0 | |||
1 | 1 | 1 | 0 | ||||
= | 1 | 0 | 0 | 0 | 1 | 1 | 0 |
Преобразование чисел в двоичной системе счисления.
Для преобразования из двоичной системы в десятичную пользуются следующей таблицей степеней
основания 2:
Начиная с цифры один каждая цифра умножается на 2. Точка, стоящая после 1, называют двоичной точкой .
Преобразование двоичных чисел в десятичные.
Пусть, есть двоичное число 110001 2 . Для перевода в десятичное записываем его в виде суммы по
разрядам следующим образом:
1 * 2 5 + 1 * 2 4 + 0 * 2 3 + 0 * 2 2 + 0 * 2 1 + 1 * 2 0 = 49
Немного по другому:
1 * 32 + 1 * 16 + 0 * 8 + 0 * 4 + 0 * 2 + 1 * 1 = 49
Также хорошо записывать расчет как таблицу:
Двигаемся справа налево. Под всеми двоичными единицами записываем её эквивалент строчкой ниже.
Преобразование дробных двоичных чисел в десятичные.
Задание: перевести число 1011010, 101 2 в десятичную систему.
Записываем заданное число в таком виде:
1*2 6 +0*2 5 +1*2 4 +1*2 3 +0 *2 2 + 1 * 2 1 + 0 * 2 0 + 1 * 2 -1 + 0 * 2 -2 + 1 * 2 -3 = 90,625
Другой вариант записи:
1*64+0*32+1*16+1*8+0*4+1*2+0*1+1*0,5+0*0,25+1*0,125 = 90,625
Либо в виде таблицы:
0.25 |
0.125 |
||||||||
0.125 |
Преобразование десятичных чисел в двоичные.
Пусть, необходимо перевести число 19 в двоичное. Можем сдеать это таким образом:
19 /2 = 9 с остатком 1
9 /2 = 4 c остатком 1
4 /2 = 2 без остатка 0
2 /2 = 1 без остатка 0
1 /2 = 0 с остатком 1
То есть, каждое частное делится на 2 и записывается остаток в конец двоичной записи. Деление
продолжается до того момента, когда в частном не будет нуля. Итог пишем справа налево. Т.е. нижняя
цифра (1) будет крайней левой и так далее. Итак, у нас получилось число 19 в двоичной записи: 10011.
Преобразование дробных десятичных чисел в двоичные.
Когда в заданном числе присутствует целая часть, то ее преобразуют отдельно от дробной. Перевод
дробного числа из десятичной системы счисления в двоичную происходит следующим образом:
- Дробь умножается на основание двоичной системы счисления (2);
- В полученном произведении выделяется целая часть, которая принимается в качестве старшего
разряда числа в двоичной системе счисления;
- Алгоритм завершается, если дробная часть полученного произведения равна нулю или если
достигнута требуемая точность вычислений. В противном случае вычисления продолжаются над
дробной частью произведения.
Пример : Нужно перевести дробное десятичное число 206,116 в дробное двоичное число.
Переведя целую часть, получаем 206 10 =11001110 2 . Дробная часть 0,116 умножается на основание 2,
заносим целые части произведения в разряды после запятой:
0,116 . 2 = 0,232
0,232 . 2 = 0,464
0,464 . 2 = 0,928
0,928 . 2 = 1,856
0,856 . 2 = 1,712
0,712 . 2 = 1,424
0,424 . 2 = 0,848
0,848 . 2 = 1,696
0,696 . 2 = 1,392
0,392 . 2 = 0,784
Результат: 206,116 10 ≈ 11001110,0001110110 2
Алгоритм перевода чисел из одной системы счисления в другую.
1. Из десятичной системы счисления:
- делим число на основание переводимой системы счисления;
- находим остаток от деления целой части числа;
- записываем все остатки от деления в обратном порядке;
2. Из двоичной системы счисления:
- для перевода в десятичную систему счисления находим сумму произведений основания 2 на
соответствующую степень разряда;
Конечно, это касается не только процессоров, но и других составляющих компьютера, например, или . И когда мы говорим, например, о разрядности шины данных, мы имеем ввиду количество выводов на шине данных, по которым передаются данные, то есть о количестве двоичных цифр в числе, которое может быть передано по шине данных за один раз. Но о разрядности чуть позже.
Итак, процессор (и компьютер в целом) использует двоичную систему, которая оперирует всего двумя цифрами: 0 и 1. И поэтому основание двоичной системы равно 2. Аналогично, основание десятичной системы равно 10, так как там используются 10 цифр.
Каждая цифра в двоичном числе называется бит (или разряд ). Четыре бита – это полубайт (или тетрада ), 8 бит – байт , 16 бит – слово , 32 бита – двойное слово . Запомните эти термины, потому что в программировании они используются очень часто. Возможно, вам уже приходилось слышать фразы типа слово данных или байт данных . Теперь, я надеюсь, вы понимаете, что это такое.
Отсчёт битов в числе начинается с нуля и справа. То есть в двоичном числе самый младший бит (нулевой бит) является крайним справа. Слева находится старший бит . Например, в слове старший бит – это 15-й бит, а в байте – 7-й. В конец двоичного числа принято добавлять букву b . Таким образом вы (и ассемблер) будете знать, что это двоичное число. Например,
101 – это десятичное число 101b – это двоичное число, которое эквивалентно десятичному числу 5. А теперь попробуем понять, как формируется двоичное число .
Ноль, он и в Африке ноль. Здесь вопросов нет. Но что дальше. А дальше разряды двоичного числа заполняются по мере увеличения этого числа. Для примера рассмотрим тетраду. Тетрада (или полубайт) имеет 4 бита.
Двоичное | Десятичное | Пояснения |
0000 | 0 | - |
0001 | 1 | |
0010 | 2 | В следующий бит (бит 1) устанавливается 1, предыдущий бит (бит 0) очищается. |
0011 | 3 | В младший бит устанавливается 1. |
0100 | 4 | В следующий бит (бит 2) устанавливается 1, младшие биты (бит 0 и 1) очищаются. |
0101 | 5 | В младший бит устанавливается 1. |
0110 | 6 | Продолжаем в том же духе... |
0111 | 7 | ... |
1000 | 8 | ... |
1001 | 9 | ... |
1010 | 10 | ... |
1011 | 11 | ... |
1100 | 12 | ... |
1101 | 13 | ... |
1110 | 14 | ... |
1111 | 15 | ... |
Итак, мы видим, что при формировании двоичных чисел разряды числа заполняются нулями и единицами в определённой последовательности:
Если младший равен нулю, то мы записываем туда единицу. Если в младшем бите единица, то мы переносим её в старший бит, а младший бит очищаем. Тот же принцип действует и в десятичной системе:
0…9 10 – очищаем младший разряд, а в старший добавляем 1 Всего для тетрады у нас получилось 16 комбинаций. То есть в тетраду можно записать 16 чисел от 0 до 15. Байт – это уже 256 комбинаций и числа от 0 до 255. Ну и так далее. На рис. 2.2 показано наглядно представление двоичного числа (двойное слово).
Рис. 2.2. Двоичное число.