Основы программирования. Биты. Булевы операции.
Andrew Kovacz
Содержание:
Привет, сегодня мы продолжим наше знакомство с битами. Из прошлых глав ты узнал, что в десятичной системе, которую мы обычно используем для счета, нет ничего особенного. Наша система счисления основана на десяти, потому что именно столько у нас пальцев на руках, — это понятно. Мы с тем же успехом могли положить в основу системы счисления восемь, четыре или даже два.
А вот у двоичной системы есть особенность: это простейшая возможная система счисления. Есть только две двоичные цифры — 0 и 1. Если мы захотим упростить двоичную систему, нам придется избавиться от единицы, и мы останемся с нулем. А с одним нулем ничего толкового не сделаешь.
Слово бит (сокращение от binary digit — двоичная цифра), — безусловно, одно из самых симпатичных слов, появившихся в связи с компьютерами. Иногда новое слово появляется за счет получения нового значения. Так и со словом «бит». Бит — это нечто большее, чем просто двоичная цифра, используемая дельфинами для расчетов. В компьютерный век бит обрел значение основного структурного блока, из которого строится информация.

Один бит информации — это минимально возможное ее количество. Все, что меньше бита, информации вообще не содержит. С другой стороны, поскольку бит представляет собой минимальный объем, более сложную информацию можно передать в нескольких битах. Можно склоняться связывать биты с числовыми значениями, но на самом деле они являются всего лишь символами, значение которых зависит от конкретного приложения. Иногда набор из битов используется для представления числовых значений, иногда они представляют символы в алфавите и знаки препинания, иногда они представляют изображения, а иногда они представляют звуки.
Булевы операции.
Чтобы нам с тобой было понятнее, как отдельные биты хранятся и управляются внутри компьютера, мы будем представлять, что бит 0 представляет значение false, а бит 1 представляет значение true. Операции, которые манипулируют истинными или ложными значениями, называются булевыми в честь математика Джорджа Буля (1815–1864), который был пионером в области математики, называемой логикой. Три основные логические операции — это AND, OR и XOR. Эти операции аналогичны арифметическим операциям умножения и сложения, потому что они объединяют пару значений (входные данные) для получения третьего значения (выходных данных). Однако, в отличие от арифметических операций, логические операции объединяют значения true / false, а не числовые значения.
Булева операция И (она же AND) предназначена для отражения истинности или ложности утверждения, сформированного путем объединения двух меньших или более простых утверждений, выраженных операцией И или как ее еще называют — «операцией конъюнкции». Такие заявления имеют общую форму:
х И у
где х представляет одно утверждение, а у представляет другое, например,
Мэри родила ребенка И вышла замуж.
Входные данные для операции И представляют истинность или ложность компонентов составного оператора; результат представляет собой истинность или ложность самого составного утверждения. Поскольку утверждение в форме х И у, является истинным только тогда, когда оба его компонента истинны, мы заключаем, что 1 И 1 должно быть 1, тогда как во всех остальных случаях результат должен быть равен 0. Аналогичным образом операция ИЛИ (она же OR), так же эту операцию еще называю - «операцией дизъюнкции», основана на составных выражениях вида:
х ИЛИ у
где, опять же, х представляет одно утверждение, а у представляет другое. Такие утверждения верны, когда хотя бы один из их компонентов имеет значение true, что согласуется с операцией ИЛИ.

Операция XOR или как еще ее называют - «исключающее или» и «сложение по модулю 2», выводит 1 (true), когда один из операндов будет равен 1 (true), а другой - 0 (false). Например, оператор вида х XOR у означает «либо х, либо у, но не оба». (Короче говоря, операция XOR выдает результат 1, когда его входные значения различны.)
Операция НЕ (она же NOT) является еще одной логической операцией. Она отличается от остальных, поскольку является унарной операцией или операцией которая имеет только одно входное значение. Ее вывод равно противоположен ее входу; если вход операции НЕ равен true, то выход false, и наоборот. Например, пусть входное значение операции НЕ является истиной или ложью следующего утверждения:
"Миша — медведь."
тогда результат будет представлять истинность или ложность противоположного утверждения:
"Миша — не медведь."
И так, ты уже знаком с двоичной системой, с битами и теперь, даже умеешь проводить логические операции над битами, точно так же, как это умеет делать компьютер. Более того, существуют устройства умеющие работать в точности как, булевы операции, которые мы сегодня рассматривали и называются вентилями. Вентили представляют собой строительные блоки, из которых состоит компьютер. На следующий раз мы немного поговорим о вентилях и о шестнадцатеричной системе счисления.
Есть вопрос?
Задай его в нашем ламповом чате https://t.me/ProgrammingFAchat