Что такое 1 и 0 в компьютере
Ей было тысяча сто лет.
Она в сто первый класс ходила,
В портфеле по сто книг носила -
Всё это правда, а не бред.
Когда пыля десятком ног,
Она шагала по дороге,
За ней всегда бежал щенок
С одним хвостом, зато стоногий .
Она ловила каждый звук
Своими десятью ушами,
И десять загорелых рук
Портфель и поводок держали.
И десять тёмно-синих глаз
Рассматривали мир привычно…
Но станет всё совсем обычным,
Когда поймёте наш рассказ.
С помощью двоичной системы кодирования можно зафиксировать любые данные и знания. Это легко понять, если вспомнить принцип кодирования и передачи информации с помощью азбуки Морзе.
Телеграфист, используя только два символа этой азбуки - точки и тире, может передать практически любой текст.
Объём памяти компьютера измеряется в байтах. Каждый байт может выражать букву, число, пробел, знак препинания или какой-либо другой символ. Количество символов, которые компьютер может хранить в оперативной памяти, меняется в широких пределах от вида компьютера и его модели.
Объём памяти, хотя он и измеряется в байтах, обычно выражается в килобайтах. Слово "килобайт", вообще говоря, означает "1000 байт". (Напомним, что приставка "кило" означает "тысяча".)
Фактически же килобайт равен 1024 байтам: 1 Кбайт = 1024 байт.
Компьютер с объёмом памяти в 64 К может хранить 64 х 1024 = 65536 символов.
Объём памяти первых микрокомпьютеров составлял всего лишь 2 Кб. Нынешние компьютеры имеют объём памяти 128, 256, 512, 1024 Мб и более
Объём памяти новейших компьютеров так велик, что она выражается в гигабайтах, т. е. в миллиардах байтов.
1 Мбайт = 1024 Кбайт = 1 048 576 байт.
Итак, каждый символ алфавитно-цифровой информации представляется в компьютере кодом из восьми двоичных цифр. Следовательно, каждый символ в компьютере имеет код объёмом 1 байт.
имеет в двоичной форме объём 25 байт: 23 буквы и 2 символа "пробел" по 1 байту.
Пример . Измерим в байтах объём текстовой информации в книге из 258 страниц, если на одной странице размещается в среднем 45 строк по 60 символов (включая пробелы). Один символ в двоичной форме содержит 1 байт. Строка будет содержать 61 байт, учитывая и служебный символ окончания строки. Тогда
61 байт * 45 строк = 2745 байт.
Так как в книге 258 страниц текста и на каждой странице в среднем по 2745 байт информации, то объём алфавитно-цифровой информации в книге
2745 байт * 258 страниц = 708210 байт " 692 Кбайт
Таким образом, текст книги имеет объём около 692 Кбайт.
Перевод чисел
Для перевода десятичного числа в двоичное надо разделить его на 2 и собрать остатки, начиная с последнего частного.
А вот как происходит перевод двоичного числа в десятичное:
В любой системе счисления нужно уметь представлять не только целые числа, но и дробные. С математической точки зрения это ординарная задача, которая давно решена. Однако с точки зрения компьютерной техники это далеко не тривиальная проблема, во многом связанная с архитектурой компьютера. Ресурсы компьютеров не бесконечны, и основной трудностью является представление периодических и непериодических дробей. Следовательно, такие дроби следует округлять, задавать класс точности участвующих (и могущих появиться в результате вычислений!) чисел без потери точности вычислений, а также следить за тем, чтобы потеря точности не произошла при переводе чисел из одной системы счисления в другую. Особенно важно аккуратно производить вычисления при операциях с плавающей точкой.
Запишем формулу представления дробного числа в позиционной системе счисления:
Ap = an-1·p n-1 +an-2·p n-2 + . + a1·p 1 +a0·p 0 +a-1·p -1 +a-2·p -2 + . + a-m·p -m ,
В случае десятичной системы счисления получим:
Перевод дробного числа из двоичной системы счисления в десятичную производится по следующей схеме:
101101,1012 = (1·2 5 +0·2 4 +1·2 3 +1·2 2 +0·2 1 +1·2 0 +1·2 -1 +0·2 -2 +1·2 -3 )10=45,62510
Перевод дробного числа из десятичной системы счисления в двоичную осуществляется по следующему алгоритму:
· Вначале переводится целая часть десятичной дроби в двоичную систему счисления;
· Затем дробная часть десятичной дроби умножается на основание двоичной системы счисления;
· В полученном произведении выделяется целая часть, которая принимается в качестве значения первого после запятой разряда числа в двоичной системе счисления;
· Алгоритм завершается, если дробная часть полученного произведения равна нулю или если достигнута требуемая точность вычислений. В противном случае вычисления продолжаются с предыдущего шага.
Пример: Требуется перевести дробное десятичное число 206,116 в дробное двоичное число.
Перевод целой части дает 20610=110011102 по ранее описанным алгоритмам; дробную часть умножаем на основание 2, занося целые части произведения в разряды после запятой искомого дробного двоичного числа:
.116 • 2 = 0 .232
.232 • 2 = 0 .464
.464 • 2 = 0 .928
.928 • 2 = 1 .856
.856 • 2 = 1 .612
.612 • 2 = 1 .224
.224 • 2 = 0 .448
.448 • 2 = 0 .896
.896 • 2 = 1 .792
.792 • 2 = 1 .584
Получим: 206,11610=11001110,00011100112
Таблицу степеней первых восьми отрицательных степеней двойки
Степень основания
Перейдем теперь к вопросу представления отрицательных чисел. Для определенности рассмотрим тип byte , в котором любое число занимает ровно восемь бит . Из записи в двоичной системе счисления равенства (- 1) + 1 = 0 легко найти, какой вид должно иметь неизвестное нам пока двоичное представление xxxxxxxx числа - 1 :
Ясно, что на месте символов xxxxxxxx должно быть расположено число 11111111 . Правильным результатом при этом, конечно, следовало бы считать 100000000 , а не 00000000 , но ведь мы имеем дело с типом byte и, так как результат обязан разместиться в байте, единица <<исчезает>>.
Итак, число - 1 должно кодироваться как 11111111 . Дальнейшее уже совсем просто: для получения - 2 нужно - 1 уменьшить на единицу, что даст 11111110 ; число - 3 представляется как 11111101 и т.д.
Отрицательные числа всегда имеют в своем двоичном представлении единицу в самом старшем разряде, который поэтому называют знаковым , а абсолютная величина кодируемого числа получается как двоичное дополнение остальных бит (нули нужно заменить на единицы и наоборот), увеличенное на один.
Легко видеть, что при этом самым маленьким отрицательным числом, которое принадлежит типу byte , является число - 128 (двоичное представление 10000000 ), а самым большим -- число 127 (представление 01111111 ). Все представимыe числа (а их 256) в данном случае могут быть получены как пересечение двух множеств: множества Z всех целых чисел и отрезка [ - 128; 127 ] .
Интересным является следующее наблюдение: если число 01111111 увеличить на единицу, то получится 10000000 , что означает следующее:
Итак, множество элементов типа byte можно представлять себе в виде свернутого в кольцо отрезка
[ - 128; 127 ] .
То, что для элементов множества , являющегося машинным аналогом Z , нарушено фундаментальное свойство целых чисел X + 1 > X , способно привести к различным невероятным на первый взгляд результатам, однако гораздо более странные вещи происходят при работе с вещественными числами.
Двоичная арифметика
Над числами в двоичной системе счисления можно выполнять арифметические действия.
Немного истории
Впервые о данной системе чисел заговорил основоположник математического анализа Г.В. Лейбниц еще в 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 |
Применение двоичной системы в информатике
Двоичная система получила особое распространение в программировании цифровых устройств, так как она соответствует требованиям многих технических устройств, поддерживающих два состояния (есть ток, нет тока). Кроме того, является более простой и надежной для кодирования информации. Именно поэтому программный код большей части ЭВМ основан именно на двоичной системе счисления.
Алфавит системы счисления — это перечень символов, используемый в конкретной системе счисления.
Основание системы счисления — это количество символов в её алфавите.
В системах счисления, которые содержат больше \(10\) знаков, после цифры \(9\) начинаются латинские буквы. \(10\), \(11\), \(12\) использовать мы не можем, т. к. это уже числа, а для продолжения алфавита нужны ещё цифры, поэтому было принято использовать латинские буквы.
Это самая распространённая система счисления в мире. Её применяют для повседневного счёта. Для записи чисел используются арабские цифры \(0\), \(1\), \(2\), \(3\), \(4\), \(5\), \(6\), \(7\), \(8\), \(9\).
Любое число позиционной системы счисления можно записать в развёрнутом виде. То есть в виде суммы произведений цифр числа на основание этой системы счисления с соответствующей степенью.
Представим десятичное число \(652,17\) в развёрнутом виде.
Сначала пронумеруем разряды числа, начиная с младшего — единиц. Нумерацию начинаем с \(0\). Цифра \(2\) находится в разряде единиц, ставим над ней \(0\), далее разряд десятков — над цифрой \(5\) ставим \(1\) и т. д.
Запишем сумму произведений цифр числа на основание системы счисления с соответствующей степенью:
652,17 10 = 6 × 10 2 + 5 × 10 1 + 2 × 10 0 + 1 × 10 − 1 + 7 × 10 − 2 .
Двоичные числа получили широкое применение в компьютерной технике. Два значения, используемые в двоичной системе счисления, позволяют идентифицировать два состояния: есть ток (\(1\)), нет тока (\(0\)); использовать булеву алгебру для работы логических устройств; легко производить арифметические операции.
Запишем двоичное число \(111001,101\) в развёрнутом виде.
111001,101 2 = 1 × 2 5 + 1 × 2 4 + 1 × 2 3 + 0 × 2 2 + 0 × 2 1 + 1 × 2 0 + 1 × 2 − 1 + 0 × 2 − 2 + 1 × 2 − 3 .
Восьмеричная и шестнадцатеричная системы счисления
У двоичной системы счисления есть один недостаток. Разряды чисел очень быстро растут. Поэтому в компьютерной технике стали широко применять восьмеричную и шестнадцатеричную системы счисления. Компьютер легко переводит числа из одной системы счисления в другую.
Рассмотрим развёрнутую запись восьмеричного числа \(452,214\).
452,214 8 = 4 × 8 2 + 5 × 8 1 + 2 × 8 0 + 2 × 8 − 1 + 1 × 8 − 2 + 4 × 8 − 3 .
Знание алгоритма записи развёрнутой формы числа пригодится нам в будущем для перевода чисел из любой позиционной системы счисления в десятичную.
Алфавит системы счисления — это перечень символов, используемый в конкретной системе счисления.
Основание системы счисления — это количество символов в её алфавите.
В системах счисления, которые содержат больше \(10\) знаков, после цифры \(9\) начинаются латинские буквы. \(10\), \(11\), \(12\) использовать мы не можем, т. к. это уже числа, а для продолжения алфавита нужны ещё цифры, поэтому было принято использовать латинские буквы.
Это самая распространённая система счисления в мире. Её применяют для повседневного счёта. Для записи чисел используются арабские цифры \(0\), \(1\), \(2\), \(3\), \(4\), \(5\), \(6\), \(7\), \(8\), \(9\).
Любое число позиционной системы счисления можно записать в развёрнутом виде. То есть в виде суммы произведений цифр числа на основание этой системы счисления с соответствующей степенью.
Представим десятичное число \(652,17\) в развёрнутом виде.
Сначала пронумеруем разряды числа, начиная с младшего — единиц. Нумерацию начинаем с \(0\). Цифра \(2\) находится в разряде единиц, ставим над ней \(0\), далее разряд десятков — над цифрой \(5\) ставим \(1\) и т. д.
Запишем сумму произведений цифр числа на основание системы счисления с соответствующей степенью:
652,17 10 = 6 × 10 2 + 5 × 10 1 + 2 × 10 0 + 1 × 10 − 1 + 7 × 10 − 2 .
Двоичные числа получили широкое применение в компьютерной технике. Два значения, используемые в двоичной системе счисления, позволяют идентифицировать два состояния: есть ток (\(1\)), нет тока (\(0\)); использовать булеву алгебру для работы логических устройств; легко производить арифметические операции.
Запишем двоичное число \(111001,101\) в развёрнутом виде.
111001,101 2 = 1 × 2 5 + 1 × 2 4 + 1 × 2 3 + 0 × 2 2 + 0 × 2 1 + 1 × 2 0 + 1 × 2 − 1 + 0 × 2 − 2 + 1 × 2 − 3 .
Восьмеричная и шестнадцатеричная системы счисления
У двоичной системы счисления есть один недостаток. Разряды чисел очень быстро растут. Поэтому в компьютерной технике стали широко применять восьмеричную и шестнадцатеричную системы счисления. Компьютер легко переводит числа из одной системы счисления в другую.
Рассмотрим развёрнутую запись восьмеричного числа \(452,214\).
452,214 8 = 4 × 8 2 + 5 × 8 1 + 2 × 8 0 + 2 × 8 − 1 + 1 × 8 − 2 + 4 × 8 − 3 .
Знание алгоритма записи развёрнутой формы числа пригодится нам в будущем для перевода чисел из любой позиционной системы счисления в десятичную.
Читайте также: