Двоичная и шестнадцатеричная системы



В двоичной системе необходимо всего два различных знака для цифр: 0 и 1. Это и вызвало столь большое ее распространение в электронике: смоделировать два состояния электронной схемы и затем их безошибочно различить неизмеримо проще, чем три, четыре и более, не говоря уж о десяти. В середине прошлого столетия советский инженер Николай Петрович Брусенцов построил вычислительную машину, которая работала в троичной системе, и потом всю свою долгую жизнь доказывал ее неоспоримые преимущества. Но несмотря на это, его изобретение так и осталось единственным примером такого рода – слишком сложна реализация электронных элементов, работающих в троичной логике.

Еще важнее, что двоичная система прекрасно согласуется как с представленными ранее логическими переменными, так и с тем фактом, что величина, могущая принимать два и только два состояния и получившая названия бит , есть естественная единица количества информации. Это было установлено в 1948 году одновременно Клодом Шенноном и Норбертом Винером, отцом кибернетики, – меньше, чем один бит, информации не бывает. Разряды двоичных чисел (т. е. чисел, представленных в двоичной системе) также стали называть битами. Слово bit – по‑английски означает «кусочек, частица чего‑либо». Как термин для обозначения количества информации, слово «бит», говорят, возникло от сокращения Bi nary digiT   – «двоичная цифра».

Представление двоичных цифр с помощью уровней напряжения, как это делается в электронных устройствах, если точно такая же модель числа, как раскладывание на земле палочек и проведение черточек на бумаге. В последних случаях мы оперируем с числами вручную, по правилам арифметики, а в электронных схемах это происходит в автоматическом режиме, без участия человека – вот и вся разница! Это понятие о «модели числа» – очень важный момент, который следует хорошо осмыслить, если вы действительно хотите вникнуть в суть работы цифровых электронных схем.

Итак, запись числа в двоичной системе требует всего двух цифр, начертание которых заимствовано из десятичной системы и выглядит, как 0 и 1. Число, например, 1101 тогда будет выглядеть так:

1·23 + 1·22 + 0·21 + 1·20= 13

Чтобы отличить запись числа в различных системах, часто внизу пишут основание системы:

11012= 1310.

Если система не указана, то имеется в виду обычно десятичная, но не всегда – часто, когда из контекста понятно, что идет речь об электронных устройствах, не указывают не только основание два, но и под словом «разрядность» имеют в виду количество именно двоичных, а не десятичных разрядов (таков, скажем, смысл термина «24‑разрядный цвет»).

Шестнадцатеричная система имеет, как ясно из ее названия, основание шестнадцать. Для того чтобы получить шестнадцать различных знаков, изобретать ничего нового не стали, а просто использовали те же цифры от 0 до 9 для первых десяти и заглавные латинские буквы от А до F для одиннадцатого‑шестнадцатого знаков (часто вместо заглавных букв употребляют и строчные, с теми же значениями). Таким образом, известное нам число 1310 выразится в шестнадцатеричной системе, как просто D 16. Соответствие шестнадцатеричных знаков десятичным числам следует выучить наизусть: А – 10, В – 11, С – 12, D – 13, Е – 14, F – 15. Значения больших чисел вычисляются по обычной формуле, например:

A2FC16 = 10·163 + 2·162 + 15·161 + 12·160 = 40960 + 512 + 240 + 12 = 4172410.

 

Перевод из одной системы счисления в другую

Как следует из изложенного, перевод в десятичную систему любых форматов не представляет сложности и при надлежащей тренировке может осуществляться даже в уме. Для того чтобы быстро переводить в десятичную систему двоичные и шестнадцатеричные числа, следует выучить наизусть таблицу степеней двойки до 16 (табл. 14.3) и представления некоторых чисел в двоичной и шестнадцатеричной формах (табл. 14.4).

 

 

 

 

Буква h добавляется к шестнадцатеричному представлению числа, чтобы отличить его от десятичного, не используя индекса 16 (в разных языках программирования есть и другие способы, см. далее). На первое время достаточно запомнить только маленькие числа, а для образования двоичных и шестнадцатеричных чисел понять принцип, остальное выучится позже само.

Из табл. 14.4 видно, что из двоичной в шестнадцатеричную системы и обратно переводить совсем просто. Двоичное число достаточно разбить на тетрады (т. е. группы из 4‑х цифр) и перевести каждую в отдельности. Например, число 5910, т. е. 0011 10112, будет равно 3Bh. Еще проще обратный перевод – каждое шестнадцатеричное число заменяется группой из 4‑х двоичных цифр. Соответственно, число A2FC16выразится так: 1010 0010 1111 11002. Заметьте, что пробелы между тетрадами в двоичных числах введены просто для удобства восприятия, подобно пробелам между тройками разрядов (классами) в записи больших десятичных чисел, и никакой иной нагрузки не несут. При записи двоичных чисел в тексте программ, как ассемблерных, так и программ на языках высокого уровня, естественно, эти пробелы ставить запрещается. Обычно при этом для удобства ведущие нули нередко не опускаются (хотя в табл. 14.4 они и опущены) – число 15 чаще всего записывается в виде 0Fh. Почему так удобнее, вы поймете далее.

* * *

 

Заметки на полях

Почему в табл. 14.4 приведены именно эти числа? Числа, на единицу меньшие степени двойки, имеют в электронике и в программировании большое значение. Если вы посмотрите в таблицу внимательно, то увидите, что наибольшее число с количеством разрядов, равным степени двойки, содержит единицы во всех разрядах, т. е. как раз и равно этой степени минус единица. При этом количество всех чисел с таким количеством разрядов равно степени двойки. Другими словами, память, содержащая ровно 256 (28) ячеек, будет иметь номер (адрес) последней ячейки, равный 255, или FFh. Наибольшее число, до которого может досчитать 8‑разрядный двоичный счетчик, также равно FFh, поскольку если подать на него еще один импульс (257‑й по счету), он обнулится, ибо 9‑го разряда, где могла бы записаться старшая единица, у него не существует. Потому с такими числами приходится иметь дело очень часто, даже чаще, чем с собственно степенями двойки.

 

* * *

Сложнее переводить из десятичной системы, и для этого в учебниках рекомендуется устрашающая процедура, основанная на делении столбиком (см., например [17]). Я сейчас попробую вам показать модификацию этого способа, который позволяет переводить числа в двоичную систему несколько более простым методом, причем небольшие числа можно переводить даже в уме.

Для начала запомним, что разряды двоичного числа нумеруются с нуля – т. е., к примеру, разряд номер 3 окажется четвертым справа. Теперь пусть мы имеем, например, десятичное число 59. Подбираем наибольшую степень двойки из табл. 14.3, не превышающую этого числа: 32, что есть 5‑я степень. Ставим 1 в 5‑м разряде: 100000. Вычитаем подобранную степень из исходного числа (59–32 = 27) и подбираем для остатка также степень, его не превышающую: 16 (24). Ставим единицу в 4‑м разряде: 110000. Повторяем процедуру вычитания‑подбора: 27–16 = 11, степень равна 8 (23), ставим единицу в 3‑м разряде: 111000. Еще раз: 11 – 8 = 3, степень равна 2 (21), так что 2‑й разряд оказался пропущен, ставим в нем ноль, а единицу во 1‑м разряде: 111010. Последнее вычитание дает 1, которую и ставим в младший (нулевой) разряд, окончательно получив 5910= 1110112.

 

 

Байты

Слово «байт» (byte ) представляет собой сокращение от B inarY digiT E ight – «восемь двоичных цифр». Другими словами, байт – это просто восьмиразрядное двоичное число. Соответственно, он имеет ровно два шестнадцатеричных разряда, или две двоичных тетрады. Такой байт был введен фирмой IBM в конце 50‑х годов прошлого века, до этого (а в СССР – и после этого, вплоть до 1969 года) применялись байты с другим количеством разрядов: 5, 6 и 7.

Почему именно 8 разрядов? Да просто потому, что так удобно – число кратно степени двойки, т. е. легко масштабируется. Скажем, шестнадцатиразрядное число – просто два байта, записанные подряд, подобно тетрадам в самом байте. В то же время число в 8 разрядов – относительно невелико и одновременно достаточно емко: имеет 256 значений, которых с лихвой хватает, к примеру, для представления всех печатных знаков европейских алфавитов. Поэтому в настоящее время байт – общепринятая единица измерения информации, т. к. основную единицу – бит – на практике применять неудобно из‑за ее мелковатости, числа получаются слишком большими. Применяют и меньшие единицы: кроме бита, это полубайт, или тетрада – одно шестнадцатеричное число.

Для современной электронной техники характерны большие, чем байт, числа – двухбайтовые (65 536 значений), четырехбайтовые (32 двоичных разряда или 4 294 967 296 значений) и даже восьмибайтовые числа. Все они часто называются словами: «word ». Так, в памяти современных персональных компьютеров минимальная ячейка памяти содержит 32 бита (или 4 байта), хотя измеряют объем памяти все равно в традиционных байтах.

* * *

 

О ЕДИНИЦАХ ИНФОРМАЦИИ

В однобуквенных сокращениях принято обозначать байт большой буквой (Б), чтобы отличить его от бита (б), но в критичных случаях во избежание разночтений следует писать полностью: «Мбайт», «Мбит». Тем более что отечественный ГОСТ 8.417‑2002 предусматривает однобуквенное сокращение для байта (Б), но не предусматривает его для бита. С приставками также имеется некоторая путаница. В 1999 году Международная электротехническая комиссия (МЭК) с большим опозданием попыталась устранить неоднозначность в обозначениях кратности, введя специальные двоичные приставки киби (вместо «кило»), меби (вместо «мега») и гиби (вместо «гига»), означающие умножение на 1024 вместо 1000. Однако «килобайты» и «мегабайты» к тому времени настолько прижились, что эти не очень удачно звучащие обозначения так и не стали общепринятыми. Приставку «кило» в единицах информации, согласно тому же отечественному стандарту, следует писать с большой буквы (Кбайт), чтобы подчеркнуть, что речь идет об умножении на 1024, а не на 1000. Однако для приставок «мега» и «гига» (а также всех остальных) такого удобного приема уже нет, поэтому это правило на практике соблюдают редко (в этой книге я его также не придерживаюсь). На практике еще можно встретить обозначение единиц информации из одной буквы (например, «256 К памяти»), но пользоваться таким способом не следует, т. к. часто приходится гадать – идет ли тут речь о килобитах или килобайтах.

 

* * *

Впрочем, есть одна область, где традиционно употребляются именно биты (а также мегабиты и гигабиты), а не байты – это характеристики последовательных цифровых линий передач. К примеру, всем знакомая характеристика модемов в 56 К означает именно 56 кбит в секунду, а так называемые широкополосные линии связи имеют скорости передачи порядка мегабит в секунду. Это связано с тем, что передача именно восьмиразрядными пакетами битов там применяется редко – скажем, стандарт RS232, который мы будем еще рассматривать в этой книге, предусматривает восемь значащих разрядов (т. е. один байт), но помимо этого передаются, как минимум, еще два бита: столовый и стартовый, итого 10. В компьютерных сетях пакеты и вовсе могут иметь переменную длину, поэтому байтами в сетях информацию считают только, когда речь идет об отправленной или принятой информации, но не о той, которая реально передается, – последняя может включать в себя достаточно много всяких служебных битов и целых байтов.

Кстати, часто употребляющийся термин «боды» не равносилен битам в секунду, как это часто ошибочно считают, бездумно записывая фразы вроде «скорость модема 56 бод». Бод – это количество посылок в секунду, где одна посылка может нести несколько битов. Так, базовая для телефонных модемов скорость передачи составляет 2400 бод, но при этом она может быть равна 4800 или 9600 бит/с, в зависимости от того, сколько бит содержится в посылке. Кроме того, скорость, выраженная в бодах, всегда представляет собой полную скорость канала, включающую все служебные поля и отдельные дополнительные биты (вроде бита четности), и потому количество реально передаваемой информации представляет плохо. По этим причинам единицей «бод» в повседневной практике лучше не пользоваться.

 

 


Дата добавления: 2019-02-12; просмотров: 305; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!