Как компьютер считает по двоичному методу
Немного истории
Впервые о данной системе чисел заговорил основоположник математического анализа Г.В. Лейбниц еще в XVII веке. Он доказал, что для данного множества действуют все арифметические операции: сложение, вычитание, умножение и даже деление. Однако вплоть до 30-х годов XX века данную систему не рассматривали всерьез. Но с развитием электронных устройств и ЭВМ, ученые вновь принялись к изучению данной темы, так как двоичная система отлично подходила для программирования и организации хранения данных в памяти компьютеров.
Таблица и алфавит
Алфавит двоичной системы счисления состоит всего из двух знаков: 0 и 1 . Однако это нисколько не усложняет выполнение арифметических действий.
Кроме того, двоичная система является самой удобной для быстрого перевода в другие системы счисления.
Так, чтобы перевести двоичное число в десятичное, необходимо найти значение его развернутой формы . Например:
1001102 = 1 ∙ 2 5 + 0 ∙ 2 4 + 0 ∙ 2 3 + 1 ∙ 2 2 + 1 ∙ 2 2 + 0 ∙ 2 0 = 32 + 0 + 0 + 4 + 2 + 0 = 3810
Чтобы наоборот перевести число в двоичную из десятичной, необходимо выполнить его деление на 2 с остатком, а затем записать все остатки в обратном порядке, начиная с частного:
Делимое | 38 | 19 | 9 | 4 | 2 |
---|---|---|---|---|---|
Делитель | 2 | 2 | 2 | 2 | 2 |
Частное | 19 | 9 | 4 | 2 | 1 |
Остаток | 0 | 1 | 1 | 0 | 0 |
Для перевода в другие системы необходимо:
- Перевести двоичный код в десятичный.
- Выполнить деление десятичного числа на основание той системы, в которую требуется перевести.
Двоичная | Восьмеричная | Шестнадцатеричная |
---|---|---|
0 | 0 | 0 |
001 | 1 | 1 |
010 | 2 | 2 |
011 | 3 | 3 |
100 | 4 | 4 |
101 | 5 | 5 |
110 | 6 | 6 |
111 | 7 | 7 |
1000 | 8 | |
1001 | 9 | |
1010 | A | |
1011 | B | |
1100 | C | |
1101 | D | |
1110 | E | |
1111 | F |
110010012 = 11 001 001 = 011 001 001 = 3118
110010012 = 1100 1001 = С916
Представление двоичных чисел
В двоичной системе также существует понятие «отрицательных» чисел. И для того, чтобы провести какую-либо операцию с ними в двоичном коде, необходимо представить его в виде дополнительного кода. Запись положительного числа при этом не меняется ни для одного из кодов.
Чтобы найти дополнительный код отрицательного числа, необходимо воспользоваться его прямым и дополнительным кодами.
Прямой код предполагает приписывание единицы в начале без изменений записи:
A > 0 | Aпр = 0A | 1010112; Aпр = 01010112 |
A ≤ 0 | Aпр = 1|A| | -1010112; Aпр = 11010112 |
Для записи обратного кода цифры заменяют на противоположное значение, первую единицу от прямого кода оставляют без изменений:
A > 0 | Aобр = 0A | 1010112; Aобр = 01010112 |
A ≤ 0 | Aобр = 1 A | -1010112; Aобр = 10101002 |
Дополнительный код предполагает использование обратного кода, с той лишь разницей, что к отрицательному числу прибавляют единицу:
A > 0 | Aдоп = 0A | 1010112; Aдоп = 01010112 |
A ≤ 0 | Aдоп = 1 A + 1 | -1010112; Aдоп = 10101012 |
Применение двоичной системы в информатике
Двоичная система получила особое распространение в программировании цифровых устройств, так как она соответствует требованиям многих технических устройств, поддерживающих два состояния (есть ток, нет тока). Кроме того, является более простой и надежной для кодирования информации. Именно поэтому программный код большей части ЭВМ основан именно на двоичной системе счисления.
Компьютеры не понимают слов и цифр так, как это делают люди. Современное программное обеспечение позволяет конечному пользователю игнорировать это, но на самых низких уровнях ваш компьютер оперирует двоичным электрическим сигналом, который имеет только два состояния: есть ток или нет тока. Чтобы «понять» сложные данные, ваш компьютер должен закодировать их в двоичном формате.
Двоичная система основывается на двух цифрах – 1 и 0, соответствующим состояниям включения и выключения, которые ваш компьютер может понять. Вероятно, вы знакомы с десятичной системой. Она использует десять цифр – от 0 до 9, а затем переходит к следующему порядку, чтобы сформировать двузначные числа, причем цифра из каждого следующего порядка в десять раз больше, чем предыдущая. Двоичная система аналогична, причем каждая цифра в два раза больше, чем предыдущая.
Подсчет в двоичном формате
В двоичном выражении первая цифра равноценна 1 из десятичной системы. Вторая цифра равна 2, третья – 4, четвертая – 8, и так далее – удваивается каждый раз. Добавление всех этих значений даст вам число в десятичном формате.
1111 (в двоичном формате) = 8 + 4 + 2 + 1 = 15 (в десятичной системе)
Учет 0 даёт нам 16 возможных значений для четырех двоичных битов. Переместитесь на 8 бит, и вы получите 256 возможных значений. Это занимает намного больше места для представления, поскольку четыре цифры в десятичной форме дают нам 10000 возможных значений. Конечно, бинарный код занимает больше места, но компьютеры понимают двоичные файлы намного лучше, чем десятичную систему. И для некоторых вещей, таких как логическая обработка, двоичный код лучше десятичного.
Следует сказать, что существует ещё одна базовая система, которая используется в программировании: шестнадцатеричная. Хотя компьютеры не работают в шестнадцатеричном формате, программисты используют её для представления двоичных адресов в удобочитаемом формате при написании кода. Это связано с тем, что две цифры шестнадцатеричного числа могут представлять собой целый байт, то есть заменяют восемь цифр в двоичном формате. Шестнадцатеричная система использует цифры 0-9, а также буквы от A до F, чтобы получить дополнительные шесть цифр.
Почему компьютеры используют двоичные файлы
Короткий ответ: аппаратное обеспечение и законы физики. Каждый символ в вашем компьютере является электрическим сигналом, и в первые дни вычислений измерять электрические сигналы было намного сложнее. Было более разумно различать только «включенное» состояние, представленное отрицательным зарядом, и «выключенное» состояние, представленное положительным зарядом.
Для тех, кто не знает, почему «выключено» представлено положительным зарядом, это связано с тем, что электроны имеют отрицательный заряд, а больше электронов – больше тока с отрицательным зарядом.
Таким образом, ранние компьютеры размером с комнату использовали двоичные файлы для создания своих систем, и хотя они использовали более старое, более громоздкое оборудование, они работали на тех же фундаментальных принципах. Современные компьютеры используют, так называемый, транзистор для выполнения расчетов с двоичным кодом.
Вот схема типичного транзистора:
По сути, он позволяет току течь от источника к стоку, если в воротах есть ток. Это формирует двоичный ключ. Производители могут создавать эти транзисторы невероятно малыми – вплоть до 5 нанометров или размером с две нити ДНК. Это то, как работают современные процессоры, и даже они могут страдать от проблем с различением включенного и выключенного состояния (хотя это связано с их нереальным молекулярным размером, подверженным странностям квантовой механики).
Почему только двоичная система
Поэтому вы можете подумать: «Почему только 0 и 1? Почему бы не добавить ещё одну цифру?». Хотя отчасти это связано с традициями создания компьютеров, вместе с тем, добавление ещё одной цифры означало бы необходимость выделять ещё одно состояние тока, а не только «выключен» или «включен».
Проблема здесь в том, что если вы хотите использовать несколько уровней напряжения, вам нужен способ легко выполнять вычисления с ними, а современное аппаратное обеспечение, способное на это, не жизнеспособно как замена двоичных вычислений. Например, существует, так называемый, тройной компьютер, разработанный в 1950-х годах, но разработка на том и прекратилась. Тернарная логика более эффективна, чем двоичная, но пока ещё нет эффективной замены бинарного транзистора или, по крайней мере, нет транзистора столь же крошечных масштабов, что и двоичные.
Причина, по которой мы не можем использовать тройную логику, сводится к тому, как транзисторы соединяются в компьютере и как они используются для математических вычислений. Транзистор получает информацию на два входа, выполняет операцию и возвращает результат на один выход.
Таким образом, бинарная математика проще для компьютера, чем что-либо ещё. Двоичная логика легко преобразуется в двоичные системы, причем True и False соответствуют состояниям Вкл и Выкл .
Бинарная таблица истинности, работающая на двоичной логике, будет иметь четыре возможных выхода для каждой фундаментальной операции. Но, поскольку тройные ворота используют три входа, тройная таблица истинности имела бы 9 или более. В то время как бинарная система имеет 16 возможных операторов (2^2^2), троичная система имела бы 19683 (3^3^3). Масштабирование становится проблемой, поскольку, хотя троичность более эффективна, она также экспоненциально более сложна.
Кто знает? В будущем мы вполне возможно увидим тройничные компьютеры, поскольку бинарная логика столкнулась с проблемами миниатюризации. Пока же мир будет продолжать работать в двоичном режиме.
Здравствуйте, в этой статье мы поговорим про такую важную тему, как двоичная система исчисления, называемую также бинарным кодом. Всем, кто хочет идти работать в ай-ти сферу должны обязательно разобраться в этом разделе, а для всех остальных будет полезно ознакомиться для общего развития, с представленной ниже информацией.
Я попытаюсь дать все необходимые понятия, и попытаюсь подробно разжевать их, чтобы у вас не осталось никаких вопросов. Попробую дополнить всё примерами, а самые сложные моменты попытаюсь объяснить на пальцах. После прочтения вы узнаете о представлении чисел в двоичном коде, некоторые особенности и полезные свойства этой системы счисления, отрасли, где она применяется и краткую теорию её становления в информатике.
Экскурс в прошлое
Бинарное исчисление было введено немецким математиком и ученым Вильгельмом Лейбницем в семнадцатом веке. Он считал двоичную нумерацию простой и красивой. Вот что он сам про неё говорил: «вычисление с помощью двоек является для науки основным и порождает новые великие изобретения. При сведении чисел к таким основаниям, как 0 и 1 — появляется чудесный порядок» . Однако счисление не получило большой популярности. По нему не издавали работ до 20 века. Однако, с появлением первых ЭВМ все поменялось и мы пользуемся им до сих пор.
Минимально необходимый теоретический базис
Для того чтобы полностью разобраться с двоичным исчислением нужно разобрать, или повторить основные определения. Это будет фундаментом для того, чтобы вы смогли понять то, что дальше написано. К ним относятся такие понятия как:
- Цифры – знаки с помощью которых мы записываем числа (0-9);
- Алфавит – набор знаков, которые мы используем для отображения числового значения. В арабском алфавите, который используется во всем мире, знаки состоят из цифр от 0 до 9.
- Разряд — место (позиция) цифры, которое она занимает. Далее я наглядно покажу, что он из себя представляет.
- Основание – количество символов, которое используется, чтобы представить информацию в нужной системе счисления. Например, в шестнадцатеричном исчислении используются – 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F, 16 символов.
- Позиционные система счисления – системы, где значение цифры зависит от её разряда (места в числе). Например, в 1000 единица обозначает “тысячу” а в 10 “десяток”. Количество, которое обозначает знак “1” меняется.
Понимая все то, что написано выше, можно перейти к сути вопроса. Итак:
Двоичная система счисления – позиционная система с основанием 2. Для отображения чисел применяется два знака – 0 и 1.
В математике обозначается с помощью нижнего индекса, где указано основание. Выглядит это вот так . Натуральные числа представляются по следующей формуле:
Немного про то, что значат буквы в формуле:
- а – цифры (нуль или единица)
- n – номер последней позиции в числе. Отсчет начинаем от 0 и считаем справа налево
- k – индекс позиции
Практика
Без практики объяснить, как этим пользоваться – трудно. Поэтому рассмотрим пару примеров. Однако для начала вам необходимо скачать таблицу, где значения бинарного кода представляются в десятичной форме. Я взял первую попавшуюся таблицу с интернета. Выглядеть она будет примерно так:
Задача 1: Представить 7 в двоичном коде, а потом расписать его с помощью формулы выше.
Для того чтобы это сделать надо:
Как видно из примера здесь нет ничего сложного. Давайте разберем что-нибудь посложнее, да и найдем таблицу посерьезнее. Я взял вот такую:
Задача 2: отобразить 13 в двоичной системе счисления.
Все шаги останутся точно такими же, однако я покажу другой способ для выполнения первого пункта. Принцип тот же, но он кажется мне более удобным.
Получаем что
Смотрим что в таблице:
Далее я приведу несколько свойств, которые вы сможете применить при работе с двоичной системой.
Полезные свойства
- Добавляя справа нулик, вы увеличиваете числовое значение в два раза. Выглядит это как-то так:
Области применения
Заключение
На этом всё, вот вы и познакомились с двоичной системой исчисления. Здесь мы рассмотрели общие положения и научились пользоваться таблицей для проверки результатов. Также вы знаете отрасли применения. Прочитав другие материалы нашего сайта, вы сможете научиться выполнять арифметические операции, и переводить счисление с основанием два в другие нумерации. Например шестнадцатеричную и восьмеричную (основание шестнадцать и восемь). При возникновении вопросов оставляйте их в комментариях.
Введение
Иногда возникает потребность быстро прочитать или записать числа в двоичной или шестнадцатеричной системе счисления, например, работая с различными байтовыми редакторами,при расчете формул с побитовыми операциями или работе с цветом. Часто в таких ситуациях нет возможности долго переводить числа с помощью формул или калькулятора. О быстрых способах перехода между системами счисления пойдет речь в данной статье.
Переход от десятичной системы к двоичной
Первый случай – считаем от десятичной системы к двоичной. Основное, что нужно помнить в данном случае – это ряд степеней двойки (1, 2, 4, 8, 16, 32, 64, 128 и т.д.). Даже если его вы не знаете, то ничего не стоит каждое следующее число умножать на двойку. Так как младшие разряды идут справа, а старшие – слева, то будем их записывать в обратном порядке справа налево.
Тема связана со специальностями:
Для примера будем переводить число 115. Дальше смотрим, если значение разряда помещается в число, то вычитаем из него это значение и ставим в этом разряде 1, иначе ставим 0.
Обратный перевод еще проще – нужно просуммировать все значения разрядов, которые отмечены единичками: 64+32+16+2+1 = 115.
Переход к шестнадцатеричной системе
Видео курсы по схожей тематике:
UX/UI Design Стартовый
UX/UI Design мобильных приложений
Теперь давайте разберемся с шестнадцатеричной системой. Имея ввиду то, что количество чисел, которые кодируются тетрадой (4 бита) и одним шестнадцатеричным символом совпадают, то соответственно каждый символ кодирует одну двоичную тетраду.
В результате получили число 0х73. Главное помнить, что А = 10, B = 11, C = 12, D = 13, E = 14, F = 15.
Если есть потребность перевести десятичное число в шестнадцатеричное или наоборот, то здесь проще всего будет сначала перевести число в двоичное представление, а затем только в шестнадцатеричное или десятеричное соответственно.
Бесплатные вебинары по схожей тематике:
Как стать Java разработчиком
UX дизайн и архитектура
Джинн – сервис анонимного поиска работы для программистов
Попрактикуйтесь самостоятельно и переведите несколько чисел из одной системы в другую, сверяясь с калькулятором. Немного практики - и вы всему научитесь.
Читайте также: