Двоичная система счисления получила широкое распространение с появлением ЭВМ. Любое число в этой системе представляется сочетанием нулей и единиц. Это позволяет достаточно просто организовать хранение и переработку информации, представленной в двоичном виде. Другим важным достоинством двоичной системы счисления является простота вычислений. Выполнение арифметических действий над числами в двоичной системе счисления производится по тем же правилам, что и в десятичной. При этом пользуются соответствующими таблицами. Рассмотрим только две арифметические операции: сложение и умножение, так как вычитание и деление по существу сводятся к сложению.
x | ||
+ | ||
Правила выполнения арифметических действий над двоичными числами можно свести в таблицу:
Сложение | Умножение |
0+0=0 | 0x0=0 |
0+1=1 | 0x1=0 |
1+0=1 | 1x0=0 |
1+1=10 | 1x1=1 |
В устройствах, реализующих операцию арифметического сложения двоичных чисел, операнды представляют числами определенной разрядности (одинаковой для обоих операндов). При этом неиспользуемые разряды заполняются нулями. Это касается как целой, так и дробной частей числа.
Надо заметить, что в реальных ЭВМ чаще всего используются 16-, 32- и 64-разрядные числа. Однако для учебных целей при рассмотрении методов выполнения арифметических операций не будем обращать внимание на разрядность операндов (т. е. будем использовать разрядность, отличающуюся от разрядности реальных ЭВМ).
В двоичной системе счисления арифметическое сложение происходит по правилу сложения по модулю два с учетом переноса единицы в старший разряд.
Пример 13. Выполнить операцию арифметического сложения двоичных чисел 110111,012 и 10011,12.
Решение:
55,25 0110111,01
+19,500010011,10
74,75 1001010,11
Результаты сложения изображены выше. В качестве проверки воспользуемся десятичными числами, соответствующими исходным двоичным. При сложении дробей перенос осуществляется и из дробной части числа в целую.
Умножение двоичных чисел производится путем образования частичных произведений и последующего их суммирования. Каждое частичное произведение равно 0, если в соответствующем разряде множителя стоит 0, или равно множимому, сдвинутому на соответствующее число разрядов влево, если в разряде множителя стоит 1.
Пример 14. Перемножить двоичные числа 111,12 и 1012.
Решение:
111,1
_ 101_
7,5 0000
___ 5___ 1111___
37,5 100101,1
Как и в предыдущем случае, в качестве проверки используем десятичные числа, соответствующие исходным двоичным.
В рассмотренном примере второй разряд множителя равен 0, поэтому второе частичное произведение также равно 0.
ЛОГИЧЕСКИЕ ОПЕРАЦИИ
Кроме арифметических, ЭВМ выполняют и логические операции, в основе которых положены понятия алгебры логики или, как ее часто называют, булевой алгебры. Основоположником этого раздела математики был Дж. Буль.
Булева алгебра оперирует с логическими переменными, которые могут принимать только два значения: истина или ложь, обозначаемые соответственно 1 и 0.
Как ранее отмечалось, основной системой счисления ЭВМ является двоичная система счисления, в которой также используются только две цифры: 1 и 0. Таким образом, одни и те же цифровые устройства ЭВМ могут применяться для обработки как числовой информации в двоичной системе счисления, так и логических переменных. Это обуславливает универсальность схемной реализации процесса обработки информации в ЭВМ.
Широкое распространение имеют следующие логические операции: И (логическое умножение), ИЛИ (логическое сложение), НЕ (отрицание). В вычислительной технике они обозначаются соответственно AND (или Ù), OR (или Ú), NOT (или ¯). С помощью этих трех операций можно представить сколь угодно сложную логическую операцию (логическую функцию). Числа, участвующие в логической операции, называются операндами. Операции И и ИЛИ — двухоперандовые. Операция НЕ — однооперандовая.
Рассмотрим пять основных операций алгебры логики.
1. Операция отрицания. Отрицанием утверждения А называется утверждение, которое ложно, если А истинно, и истинно, если А ложно. Отрицание обозначается Ā (читается «не А »). Связь между значением истинности для утверждений А и Ā можно выразить с помощью следующей таблицы истинности для отрицания:
¯ | А | Ā |
Из первой строки таблицы видно, что Ā ложно, если Аистинно. Вторая строка устанавливает, что Ā истинно, если А ложно.
Пример 15. Рассмотрим высказывание
А = {Город Нью-Йорк — столица США}.
Отрицанием этого высказывания будет высказывание
Ā ={Город Нью-Йорк не является столицей США}.
Было бы ошибкой считать отрицанием высказывания А высказывание
В = {Город Вашингтон — столица США}.
Часто говорят, что операции отрицания в обычной речи соответствует употребление частицы не. Это не всегда так. В самом деле, пусть
A={Это пособие написано не для любителей музыки},
тогда
Ā = {Это пособие написано не не для любителей музыки}
или, в соответствии с правилами русской речи,
Ā = {Это пособие написано для любителей музыки},
т. е. для построения отрицания надо убрать из высказывания частицу «не».
Пример 16. Записать результат выполнения логической операции .
Ответ: = 10010
Следует заметить, что результатом логических операций может быть число, отличное от исходных.
2. Операция дизъюнкции.. Дизъюнкцией утверждений A и B называется утверждение, которое истинно, если истинно хотя бы одно из утверждений A и B, и ложно, когда A и B ложны одновременно. Дизъюнкция обозначается символом A B (читается «A или B») и определяется следующей таблицей истинности:
![]() | A | B | A ![]() |
Пример 17. Даны два высказывания
А= {Завтра первый урок литература} и
В = {Завтра первый урок математика}.
Дизъюнкция этих высказываний
А В = {Завтра первый урок литература или математика}
будет истинной, если на первом уроке будет литература (2-я строка таблицы истинности) или математика (3-я строка таблицы), и ложной, если на первом уроке будет любой другой предмет или если урока вообще не будет (4-я строка таблицы).
Логические действия с двоичными числами выполняются поразрядно. Если количество разрядов в операндах неодинаково, следует дописать незначащие нули.
Пример 18. Логически сложить два двоичных числа 101000102 и 11112.
Решение:
Ответ: 10100010 1111=10101111
3. Операция конъюнкции. Конъюнкцией утверждений A и B называется утверждение, которое истинно, если истинны оба утверждения A и B, и ложно – в противном случае, т.е. когда хотя бы одно из утверждений ложно. Конъюнкция обозначается символом А В(читается «A и B») и определяется следующей таблицей истинности:
![]() | A | B | A ![]() |
Пример 19. Пусть
А = {Петя не любит математику} и
В = {Петя любит физику}.
Конъюнкция А В= {Петя не любит математику и любит физику} истинна только тогда, когда Петя любит физику, аматематику не любит.
В остальных трех случаях, т. е. когда Петя:
а) не любит математику и не любит физику,
б) любит математику и физику,
в) любит математику, но не любит физику высказывание А В ложно.
Для образования конъюнкции в русском языке используются союзы и, а, но, хотя, однако.
Пример 20. Логически перемножить два двоичных числа 111100112 и 1111112.
Решение:
00111111
Ответ: 11110011 111111 = 110011
4. Операция «исключающее или» (XOR, сложение по модулю 2). В случае 2 переменных результат выполнения операции является истинным тогда и только тогда, когда лишь один из аргументов является истинным. Для функции трёх и более переменных результат выполнения операции будет истинным только тогда, когда количество аргументов равных 1, составляющих текущий набор - нечетное.
![]() | A | B | A ![]() |
Пример 20. Произвести побитовую операцию XOR над двумя двоичными числами 101000102 и 11112.
Решение:
Ответ: 10100010 1111=
.
5. Операция сдвига. Сдвиг, при котором уходящий бит исчезает, не влияя на оставшиеся биты, а на месте появившегося бита записывается бит 0.
Пример 21. Пусть у нас есть двоичное число 10101010.
Если сделать сдвиг влево на 1 бит, то получим число 01010100.
Если сделать сдвиг исходного числа вправо на 1 бит, то получим число 01010101.
Если сделать сдвиг исходного числа вправо на 4 бита, то получим число 00001010.
6. Операция циклического сдвига. При этом сдвиге уходящий бит появляется на месте появившегося свободного на другом конце числа.
Пример 22. Пусть у нас есть двоичное число 11111010.
Если сделать сдвиг влево на 1 бит, то получим число 11110101.
Если сделать сдвиг вправо на 1 бит, то получим число 01111101.