Для чего используются системы счисления
Основы систем счисления
Изучая кодировки, я понял, что недостаточно хорошо понимаю системы счислений. Тем не менее, часто использовал 2-, 8-, 10-, 16-ю системы, переводил одну в другую, но делалось все на “автомате”. Прочитав множество публикаций, я был удивлен отсутствием единой, написанной простым языком, статьи по столь базовому материалу. Именно поэтому решил написать свою, в которой постарался доступно и по порядку изложить основы систем счисления.
Введение
Система счисления — это способ записи (представления) чисел.
Что под этим подразумевается? Например, вы видите перед собой несколько деревьев. Ваша задача — их посчитать. Для этого можно — загибать пальцы, делать зарубки на камне (одно дерево — один палец\зарубка) или сопоставить 10 деревьям какой-нибудь предмет, например, камень, а единичному экземпляру — палочку и выкладывать их на землю по мере подсчета. В первом случае число представляется, как строка из загнутых пальцев или зарубок, во втором — композиция камней и палочек, где слева — камни, а справа — палочки
Системы счисления подразделяются на позиционные и непозиционные, а позиционные, в свою очередь, — на однородные и смешанные.
Непозиционная — самая древняя, в ней каждая цифра числа имеет величину, не зависящую от её позиции (разряда). То есть, если у вас 5 черточек — то число тоже равно 5, поскольку каждой черточке, независимо от её места в строке, соответствует всего 1 один предмет.
Позиционная система — значение каждой цифры зависит от её позиции (разряда) в числе. Например, привычная для нас 10-я система счисления — позиционная. Рассмотрим число 453. Цифра 4 обозначает количество сотен и соответствует числу 400, 5 — кол-во десяток и аналогично значению 50, а 3 — единиц и значению 3. Как видим — чем больше разряд — тем значение выше. Итоговое число можно представить, как сумму 400+50+3=453.
Однородная система — для всех разрядов (позиций) числа набор допустимых символов (цифр) одинаков. В качестве примера возьмем упоминавшуюся ранее 10-ю систему. При записи числа в однородной 10-й системе вы можете использовать в каждом разряде исключительно одну цифру от 0 до 9, таким образом, допускается число 450 (1-й разряд — 0, 2-й — 5, 3-й — 4), а 4F5 — нет, поскольку символ F не входит в набор цифр от 0 до 9.
Смешанная система — в каждом разряде (позиции) числа набор допустимых символов (цифр) может отличаться от наборов других разрядов. Яркий пример — система измерения времени. В разряде секунд и минут возможно 60 различных символов (от «00» до «59»), в разряде часов – 24 разных символа (от «00» до «23»), в разряде суток – 365 и т. д.
Непозиционные системы
Как только люди научились считать — возникла потребность записи чисел. В начале все было просто — зарубка или черточка на какой-нибудь поверхности соответствовала одному предмету, например, одному фрукту. Так появилась первая система счисления — единичная.
Единичная система счисления
Число в этой системе счисления представляет собой строку из черточек (палочек), количество которых равно значению данного числа. Таким образом, урожай из 100 фиников будет равен числу, состоящему из 100 черточек.
Но эта система обладает явными неудобствами — чем больше число — тем длиннее строка из палочек. Помимо этого, можно легко ошибиться при записи числа, добавив случайно лишнюю палочку или, наоборот, не дописав.
Для удобства, люди стали группировать палочки по 3, 5, 10 штук. При этом, каждой группе соответствовал определенный знак или предмет. Изначально для подсчета использовались пальцы рук, поэтому первые знаки появились для групп из 5 и 10 штук (единиц). Все это позволило создать более удобные системы записи чисел.
Древнеегипетская десятичная система
Почему она называется десятичной? Как писалось выше — люди стали группировать символы. В Египте — выбрали группировку по 10, оставив без изменений цифру “1”. В данном случае, число 10 называется основанием десятичной системы счисления, а каждый символ — представление числа 10 в какой-то степени.
Числа в древнеегипетской системе счисления записывались, как комбинация этих
символов, каждый из которых повторялся не более девяти раз. Итоговое значение равнялось сумме элементов числа. Стоит отметить, что такой способ получения значения свойственен каждой непозиционной системе счисления. Примером может служить число 345:
Вавилонская шестидесятеричная система
В отличии от египетской, в вавилонской системе использовалось всего 2 символа: “прямой” клин — для обозначения единиц и “лежачий” — для десятков. Чтобы определить значение числа необходимо изображение числа разбить на разряды справа налево. Новый разряд начинается с появления прямого клина после лежачего. В качестве примера возьмем число 32:
Число 60 и все его степени так же обозначаются прямым клином, что и “1”. Поэтому вавилонская система счисления получила название шестидесятеричной.
Все числа от 1 до 59 вавилоняне записывали в десятичной непозиционной системе, а большие значения — в позиционной с основанием 60. Число 92:
Запись числа была неоднозначной, поскольку не существовало цифры обозначающей ноль. Представление числа 92 могло обозначать не только 92=60+32, но и, например, 3632=3600+32. Для определения абсолютного значения числа был введен специальный символ для обозначения пропущенного шестидесятеричного разряда, что соответствует появлению цифры 0 в записи десятичного числа:
Теперь число 3632 следует записывать, как:
Шестидесятеричная вавилонская система — первая система счисления, частично основанная на позиционном принципе. Данная система счисления используется и сегодня, например, при определении времени — час состоит из 60 минут, а минута из 60 секунд.
Римская система
Римская система не сильно отличается от египетской. В ней для обозначения чисел 1, 5, 10, 50, 100, 500 и 1000 используются заглавные латинские буквы I, V, X, L, C, D и M соответственно. Число в римской системе счисления — это набор стоящих подряд цифр.
Позиционные системы счисления
Как упоминалось выше — первые предпосылки к появлению позиционной системы возникли в древнем Вавилоне. В Индии система приняла форму позиционной десятичной нумерации с применением нуля, а у индусов эту систему чисел заимствовали арабы, от которых её переняли европейцы. По каким-то причинам, в Европе за этой системой закрепилось название “арабская”.
Десятичная система счисления
Это одна из самых распространенных систем счисления. Именно её мы используем, когда называем цену товара и произносим номер автобуса. В каждом разряде (позиции) может использоваться только одна цифра из диапазона от 0 до 9. Основанием системы является число 10.
Для примера возьмем число 503. Если бы это число было записано в непозиционной системе, то его значение равнялось 5+0+3 = 8. Но у нас — позиционная система и значит каждую цифру числа необходимо умножить на основание системы, в данном случае число “10”, возведенное в степень, равную номеру разряда. Получается, значение равно 5*10 2 + 0*10 1 + 3*10 0 = 500+0+3 = 503. Чтобы избежать путаницы при одновременной работе с несколькими системами счисления основание указывается в качестве нижнего индекса. Таким образом, 503 = 50310.
Помимо десятичной системы, отдельного внимания заслуживают 2-, 8-, 16-ая системы.
Двоичная система счисления
Эта система, в основном, используется в вычислительной технике. Почему не стали использовать привычную нам 10-ю? Первую вычислительную машину создал Блез Паскаль, использовавший в ней десятичную систему, которая оказалась неудобной в современных электронных машинах, поскольку требовалось производство устройств, способных работать в 10 состояниях, что увеличивало их цену и итоговые размеры машины. Этих недостатков лишены элементы, работающие в 2-ой системе. Тем не менее, рассматриваемая система была создана за долго до изобретения вычислительных машин и уходит “корнями” в цивилизацию Инков, где использовались кипу — сложные верёвочные сплетения и узелки.
Двоичная позиционная система счисления имеет основание 2 и использует для записи числа 2 символа (цифры): 0 и 1. В каждом разряде допустима только одна цифра — либо 0, либо 1.
Примером может служить число 101. Оно аналогично числу 5 в десятичной системе счисления. Для того, чтобы перевести из 2-й в 10-ю необходимо умножить каждую цифру двоичного числа на основание “2”, возведенное в степень, равную разряду. Таким образом, число 1012 = 1*2 2 + 0*2 1 + 1*2 0 = 4+0+1 = 510.
Хорошо, для машин 2-я система счисления удобнее, но мы ведь часто видим, используем на компьютере числа в 10-й системе. Как же тогда машина определяет какую цифру вводит пользователь? Как переводит число из одной системы в другую, ведь в её распоряжении всего 2 символа — 0 и 1?
Чтобы компьютер мог работать с двоичными числами (кодами), необходимо чтобы они где-то хранились. Для хранения каждой отдельной цифры применяется триггер, представляющий собой электронную схему. Он может находится в 2-х состояниях, одно из которых соответствует нулю, другое — единице. Для запоминания отдельного числа используется регистр — группа триггеров, число которых соответствует количеству разрядов в двоичном числе. А совокупность регистров — это оперативная память. Число, содержащееся в регистре — машинное слово. Арифметические и логические операции со словами осуществляет арифметико-логическое устройство (АЛУ). Для упрощения доступа к регистрам их нумеруют. Номер называется адресом регистра. Например, если необходимо сложить 2 числа — достаточно указать номера ячеек (регистров), в которых они находятся, а не сами числа. Адреса записываются в 8- и 16-ричной системах (о них будет рассказано ниже), поскольку переход от них к двоичной системе и обратно осуществляется достаточно просто. Для перевода из 2-й в 8-ю число необходимо разбить на группы по 3 разряда справа налево, а для перехода к 16-ой — по 4. Если в крайней левой группе цифр не достает разрядов, то они заполняются слева нулями, которые называются ведущими. В качестве примера возьмем число 1011002. В восьмеричной — это 101 100 = 548, а в шестнадцатеричной — 0010 1100 = 2С16. Отлично, но почему на экране мы видим десятичные числа и буквы? При нажатии на клавишу в компьютер передаётся определённая последовательность электрических импульсов, причём каждому символу соответствует своя последовательность электрических импульсов (нулей и единиц). Программа драйвер клавиатуры и экрана обращается к кодовой таблице символов (например, Unicode, позволяющая закодировать 65536 символов), определяет какому символу соответствует полученный код и отображает его на экране. Таким образом, тексты и числа хранятся в памяти компьютера в двоичном коде, а программным способом преобразуются в изображения на экране.
Восьмеричная система счисления
8-я система счисления, как и двоичная, часто применяется в цифровой технике. Имеет основание 8 и использует для записи числа цифры от 0 до 7.
Шестнадцатеричная система счисления
Шестнадцатеричная система широко используется в современных компьютерах, например при помощи неё указывается цвет: #FFFFFF — белый цвет. Рассматриваемая система имеет основание 16 и использует для записи числа: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B. C, D, E, F, где буквы равны 10, 11, 12, 13, 14, 15 соответственно.
Помимо рассмотренных позиционных систем счисления, существуют и другие, например:
1) Троичная
2) Четверичная
3) Двенадцатеричная
Позиционные системы подразделяются на однородные и смешанные.
Однородные позиционные системы счисления
Определение, данное в начале статьи, достаточно полно описывает однородные системы, поэтому уточнение — излишне.
Смешанные системы счисления
К уже приведенному определению можно добавить теорему: “если P=Q n (P,Q,n – целые положительные числа, при этом P и Q — основания), то запись любого числа в смешанной (P-Q)-ой системе счисления тождественно совпадает с записью этого же числа в системе счисления с основанием Q.”
Смешанными системами счисления также являются, например:
1) Факториальная
2) Фибоначчиева
Перевод из одной системы счисления в другую
Иногда требуется преобразовать число из одной системы счисления в другую, поэтому рассмотрим способы перевода между различными системами.
Преобразование в десятичную систему счисления
Пример: 1012 = 1*2 2 + 0*2 1 + 1*2 0 = 4+0+1 = 510
Преобразование из десятичной системы счисления в другие
Записав все остатки снизу вверх, получаем итоговое число 17. Следовательно, 1510 = 178.
Преобразование из двоичной в восьмеричную и шестнадцатеричную системы
В качестве примера возьмем число 10012: 10012 = 001 001 = (0*2 2 + 0*2 1 + 1*2 0 ) (0*2 2 + 0*2 1 + 1*2 0 ) = (0+0+1) (0+0+1) = 118
Для перевода в шестнадцатеричную — разбиваем двоичное число на группы по 4 цифры справа налево, затем — аналогично преобразованию из 2-й в 8-ю.
Преобразование из восьмеричной и шестнадцатеричной систем в двоичную
Перевод из восьмеричной в двоичную — преобразуем каждый разряд восьмеричного числа в двоичное 3-х разрядное число делением на 2 (более подробно о делении см. выше пункт “Преобразование из десятичной системы счисления в другие”), недостающие крайние разряды заполним ведущими нулями.
Для примера рассмотрим число 458: 45 = (100) (101) = 1001012
Перевод из 16-ой в 2-ю — преобразуем каждый разряд шестнадцатеричного числа в двоичное 4-х разрядное число делением на 2, недостающие крайние разряды заполняем ведущими нулями.
Преобразование дробной части любой системы счисления в десятичную
Преобразование осуществляется также, как и для целых частей, за исключением того, что цифры числа умножаются на основание в степени “-n”, где n начинается от 1.
Преобразование дробной части двоичной системы в 8- и 16-ую
Перевод дробной части осуществляется также, как и для целых частей числа, за тем лишь исключением, что разбивка на группы по 3 и 4 цифры идёт вправо от десятичной запятой, недостающие разряды дополняются нулями справа.
Пример: 1001,012 = 001 001, 010 = (0*2 2 + 0*2 1 + 1*2 0 ) (0*2 2 + 0*2 1 + 1*2 0 ), (0*2 2 + 1*2 1 + 0*2 0 ) = (0+0+1) (0+0+1), (0+2+0) = 11,28
Преобразование дробной части десятичной системы в любую другую
Для перевода дробной части числа в другие системы счисления нужно обратить целую часть в ноль и начать умножение получившегося числа на основание системы, в которую нужно перевести. Если в результате умножения будут снова появляться целые части, их нужно повторно обращать в ноль, предварительно запомнив (записав) значение получившейся целой части. Операция заканчивается, когда дробная часть полностью обратится в нуль.
Для примера переведем 10,62510 в двоичную систему:
0,625*2 = 1,25
0,250*2 = 0,5
0,5*2 = 1,0
Записав все остатки сверху вниз, получаем 10,62510 = (1010), (101) = 1010,1012
Системы счисления и их практическое применение
Память человечества не сохранила, не донесла до нас имя изобретателя колеса или гончарного круга. Это и неудивительно: более 10 тысяч лет прошло с тех пор, как люди всерьез занялись земледелием, скотоводством и производством простейших товаров. Назвать же имя гения, впервые задавшего вопрос «Сколько?», тем более невозможно.
В каменном веке, когда люди собирали плоды, ловили рыбу и охотились на животных, потребность в счете возникла так же естественно, как и потребность в добывании огня. Об этом свидетельствуют находки археологов на стоянках первобытных людей. Например, в 1937 году в Вестонице (Моравия) на месте одной из таких стоянок найдена волчья кость с 55 глубокими зарубками. Позже в других местах ученые находили столь же древние каменные предметы с точками и черточками, сгруппированными по три или по пять.
Развитие чисел тесно связано с потребностями общества в измерениях, контроле, особенно в областях аграрной, промышленной и налогообложения. Первые области применения чисел были связаны с созерцанием звезд и земледелием. Изучение звездного неба позволило проложить торговые морские пути, караванные дороги в новые районы и резко увеличить эффект торговли между государствами. Обмен товарами приводил к обмену культурными ценностями, к развитию толерантности как явления, лежащего в основе мирного сосуществования различных рас и народов. Понятие числа всегда сопровождалось и нечисловыми понятиями. Например, один, два, много. Эти нечисловые понятия всегда ограждали числа. Числа придавали законченный вид всем наукам, где они применялись.
Язык чисел, как и обычный язык, имеет свой алфавит. В том языке чисел, которым сейчас пользуются практически на всём земном шаре, алфавитом служат десять цифр от 0 до 9. Этот язык называется десятичной системой счисления. Однако не во все времена и не везде люди пользовались десятичной системой счисления. С точки зрения чисто математической она не имеет специальных преимуществ перед другими возможными системами счисления, и своим повсеместным распространением эта система обязана вовсе не общим законам математики, а причинам совсем иного характера. О свойствах, истории возникновения и применения различных систем счисления будет рассказано в нашей работе.
Потребность в записи числа появилась в очень древние времена, как только люди начали считать.
Представим себе то далекое время, когда люди только начали изобретать числа. В те времена для счета человеку хватало четырех слов: один, два три и много. Именно так считают и сейчас некоторые племена, живущие в джунглях Южной Америки. С развитием человечества этих слов стало не хватать. Земледельцу надо было подсчитать урожай, скотоводу животных, строителю количество бревен Умение считать и производить операции с числами высоко ценилось. Числа вызывали удивление, потому что они могли обозначать количество любых предметов, например, два пальца, две руки, два человека или два камня.
Поштучно считать предметы удобно тогда, когда их не очень много, т. к. чем большее число надо записать, тем длиннее будет строка из палочек.
Со времени их происхождение сформировалось большое количество отличных систем счисления: пятеричная, десятичная, мультипликативная
Машинная группа систем счисления
Перед математиками и конструкторами 50-х годов встала проблема отыскания таких систем счисления, которые отвечали бы требованиям, как разработчиков ЭВМ, так и создателей программного обеспечении. Одним из итогов этих исследований стало значительное изменение представлений о системах счисления и о методах вычислений. Оказалось, что арифметический счет, которым человечество пользуется с древнейших времен, может совершенствоваться, подчас весьма неожиданно и на удивление эффективно.
Специалисты выделили так называемую «машинную» группу систем счисления и разработали способы преобразования чисел этой группы. К «машинной» группе систем счисления относятся: двоичная, восьмеричная, шестнадцатеричная. Однако на начальном этапе развития информационных технологий использовалась троичная система счисления.
Двоичная система проста, так как для представления информации в ней используются всего два состояния или две цифры. Такое представление информации принято называть двоичным кодированием. Представление информации в двоичной системе использовалось человеком с давних времен. Так, жители островов Полинезии передавали необходимую информацию при помощи барабанов: чередование звонких и глухих ударов. Звук над поверхностью воды распространялся на достаточно большое расстояние, таким образом «работал» полинезийский телеграф. В телеграфе в Х1Х-ХХ веках информация передавалась с помощью азбуки Морзе — в виде последовательности из точек и тире.
В конце XX века, века компьютеризации, Человечество пользуется двоичной системой ежедневно, так как вся информация, обрабатываемая современными ЭВМ, хранится в них в двоичном виде. Каким же образом осуществляется это хранение? Каждый регистр арифметического устройства ЭВМ, каждая ячейка памяти представляет собой физическую систему, состоящую из некоторого числа однородных элементов. Каждый такой элемент способен находиться в нескольких состояниях и служит для изображения одного из разрядов числа. Именно поэтому каждый элемент ячейки называют разрядом. Нумерацию разрядов в ячейке принято вести справа налево, самый левый разряд имеет порядковый номер 0. Если при записи чисел в ЭВМ мы хотим использовать обычную десятичную систему счисления, то мы должны получать 10 устойчивых состояний для каждого разряда, как на счетах при помощи костяшек. Такие машины существуют. Однако конструкция элементов такой машины чрезвычайно сложна. Наиболее надежным и дешевым является устройство, каждый разряд которого может принимать два состояния: намагничено — не намагничено, высокое напряжение — низкое напряжение и т. д. В современной электронике развитие аппаратной базы ЭВМ идет именно в этом направлении. Следовательно, использование двоичной системы счисления в качестве внутренней системы представления информации вызвано конструктивными особенностями элементов вычислительных машин.
Преимущества двоичной системы счисления:
1. Простота совершаемых операций
2. Возможность осуществлять автоматическую обработку информации, реализуя только два состояния элементов компьютера.
Недостаток двоичной системы счисления:
1. Быстрый рост числа разрядов в записи, представляющей двоичное число
Для представления двоичных чисел вне компьютера используют более компактные по длине чисел восьмеричную (для записи кодов чисел и машинных команд) и шестнадцатеричную (для записи адреса команд) системы счисления.
3. Предоставление информации в компьютере.
В данный момент для кодировки информации в компьютере используется двоичная система счисления. Каждый символ в компьютере представляется в виде последовательности единиц и нулей, любая такая последовательность состоит из восьми знаков. Знакоместа в таких последовательностях называется битом, а восемь битов это байт.
Для перевода значений отдельных байтов в понятные человеку знаки (буквы и цифры) компьютер использует специальные «кодовые таблицы», в которых каждому знаку сопоставлен байт с определенным значением.
Впрочем, измерять компьютерную информацию байтами весьма неудобно из-за объема. Вот почему на практике в компьютерном мире оперируют такими величинами:
• килобайт (кб) — 2 в степени 10 байт — 1024 байт;
• мегабайт (Мб) — 2 в степени 20 байт — 1 048 576 байт —
1 048 576 кб-1024 Мб;
• терабайт (Тб) — 2 в степени 40 байт — 1 099 511 627 776 байт —
Биты используются в компьютерной терминологии значительно реже, — например, в показателях скорости передачи данных:
• килобит (кбит) — 2 в степени 10 бит —’1024 бит — 128 байт;
• мегабит (Мбит) — 2 в степени 20 бит — 1 048 576 бит —
3. 1Представление чисел.
Как было уже сказано, все числовые данные хранятся в машине в двоичном виде, то есть в виде последовательности нулей и единиц, однако формы хранения целых и вещественных чисел различны.
Целые числа хранятся в форме с фиксированной запятой, вещественные числа хранятся в форме с плавающей запятой. В темах 8 и 9 можно прочитать подробное описание способов представления чисел в компьютерах. Заметим, что термин «действительные числа» в компьютерной терминологии заменяется на вещественные числа.
Необходимость различного представления целых и вещественных чисел вызвана тем, что скорость выполнения арифметических операций над числами с плавающей запятой существенно ниже скорости выполнения этих же операций над числами с фиксированной запятой. Существует большой класс задач, в которых не используются вещественные числа. Например, задачи экономического характера, при решении которых данными служат количество деталей, акций, сотрудников и так далее, работают только с целыми числами. Текстовая, графическая и звуковая информация, как это будет показано ниже, также кодируются в компьютере с помощью целых чисел. Для повышения скорости выполнения таких задач и используется представление целых чисел в форме с фиксированной запятой.
Для решения математических и физических задач, в которых трудно обойтись только целыми числами, используется представление чисел в форме с плавающей запятой.
Более того, в современных персональных компьютерах процессоры выполняют операции только над целыми числами в форме с фиксированной запятой.
3. 2Представление текстовых данных
Любой текст состоит из последовательности символов. Символами могут быть буквы, цифры, знаки препинания, знаки математических действий, круглые и квадратные скобки и т. д. Особо обратим внимание на символ «пробел», который используется для разделения слов и предложений между собой. Хотя на бумаге или экране дисплея «пробел» — это пустое, свободное место, этот символ ничем не хуже» любого другого символа. На клавиатуре компьютера или пишущей машинки символу «пробел» соответствует специальная клавиша.
Текстовая информация, как и любая другая, хранится в памяти компьютера в двоичном виде. Для этого каждому символу ставится в соответствие некоторое неотрицательное число, называемое кодом символа, и это число записывается в компьютерную память в двоичном виде. Конкретное соответствие между символами и их кодами называется системой кодировки.
В современных компьютерах, в зависимости от типа операционной системы и конкретных прикладных программ, используются 8-разрядные и 16-разрядные (Windows 95, 98, ХР) коды символов. Использование 8-разрядных кодов позволяет закодировать 256 различных знаков, этого вполне достаточно для представления многих символов, используемых на практике. При такой кодировке для кода символа достаточно выделить в памяти один байт. Так и делают: каждый символ представляют своим кодом, который записывают в один байт памяти. В персональных компьютерах обычно используется система кодировки ASCII (American standard Соде for Information Interchange) — американский стандартный код для обмена информации. В этой системе не предусмотрены коды для русского алфавита, поэтому в нашей стране используются варианты этой системы кодировки, в которые включают буквы русского алфавита. Чаще всего используется вариант, известный под названием «Альтернативная кодировка».
Компьютерные технологии постоянно совершенствуются, и в настоящее время все большее число программ начинает поддерживать шестнадцатибитовый стандарт Unicode, который позволяет кодировать практически все языки и диалекты жителей Земли в силу того, что кодировка включает в себя 65 536 различных двоичных кодов.
3. 3. Представление графической информации
Мониторы современных компьютеров могут работать в двух режимах: текстовом и графическом.
В текстовом режиме экран обычно разбивается на 25 строк по 80 символов в строке. В каждую позицию экрана (знакоместо) может быть помещен один символ. В текстовом режиме на экран монитора можно выводить тексты и простые рисунки, составленные из символов псевдографики. Всего на экране 25 • 80 = 2000 знакомест. В каждом знакоместе находится ровно один символ (пробел — равноправный символ), этот символ может быть высвечен одним из 16 цветов. При этом можно изменять цвет фона (8 цветов), на котором рисуется символ и, кроме того, символ может мерцать, для представления цвета символа нам требуется 4 бита (2 = 16), для представления цвета фона требуется 3 бита (23 = 8), один бит — для реализации мерцания (0 — не мерцает, 1 — мерцает). Следовательно, для описания каждого знакоместо нам требуется 2 байта: первый байт — символ, второй байт — его цветовые характеристики. Таким образом, любой текст или рисунок в текстовом режиме монитора в памяти компьютера (в видеопамяти) занимает 2000 • 2 байта = 4000 байт 4 Кбайта.
В графическом режиме экран разделяется на отдельные светящиеся точки (пиксели), количество которых определяет разрешающую способность монитора и зависит от его типа и режима. Любое графическое изображение хранится в памяти в виде информации о каждом пикселе на экране. Если пиксель не участвует в изображении картинки, то он не светится, если участвует, то светится и имеет определенный цвет. Поэтому состояние каждого пикселя описывается последовательностью нулей и единиц. Такую форму представления графических изображений называют растровой. В зависимости от того, сколькими цветами (размер палитры) мы можем высветить каждый пиксель, рассчитывается размер информации, отводимый под каждый пиксель. Если монитор может работать с 16 цветами, то цвет каждого пикселя описывается 4 битами (24 = 16). Для работы с 256 цветами под каждый пиксель надо будет отвести 8 бит, или 1 байт (28 = 256).
Посчитаем, сколько байт занимает при хранении в памяти картинка, если на экран можно вывести 640 * 480 пикселей, и монитор поддерживает 256 цветов:
640. 480 • 1 байт = 307200 байт 300 Кбайт.
Компьютерное кодирование видеоинформации, также как кино и телевидение, основаны на том, что человеческое зрение позволяет создавать иллюзию движения при частой смене кадров (более 15 раз в секунду), на которых изображены последовательные фазы движения. Для записи 1 секунды цветного изображения без звука (25 кадров размером 1024 * 768 пикселей) потребуется примерно 60 Мбайт (25 4024. 768 • 3 = 58 982 400 байт). При этом на запись двухчасового фильма потребуется более 400 Гбайт.
Из-за больших размеров графических и видео файлов они очень редко хранятся в компьютере в неупакованном виде.
Простейший методов упаковки графических изображений RLE-кодирование ( англ. Run-Length Encoding) — кодирование путем учета числа повторений), позволяющее компактно кодировать длинные последовательности одинаковых байтов. Упакованная последовательность состоит из управляющих байтов, за каждым из которых следуют один или несколько байтов данных. Если старший (самый левый) бит управляющего байта ранен 1, то следующий байт надо при распаковке повторить несколько раз (сколько именно — записано в оставшихся семи битах управляющего байта). Например, управляющий байт 10000101 говорит, что следующий за ним байт нужно повторить 5 раз (так как двоичное число 101 равно 5). Если же старший бит управляющего байта равен 0, то надо взять несколько следующих байтов данных без всяких изменений. Сколько именно — тоже записано в оставшихся 7 битах. Например, управляющий байт 00000011 говорит, что следующие за ним 3 байта нужно взять без изменений.
Другие алгоритмы сжатия графической и видео информации основываются на том, что человеческий глаз более восприимчив к яркости отдельной точкУ1, чем к её цветности.
Поэтому можно при упаковке выбросить данные о цвете каждой второй точки изображения (сохранив только ее яркость), a при распаковке — брать вместо выброшенного цвет соседней точки. Формально распакованное изображение будет отличаться от исходного, однако это отличие будет практически незаметно на глаз. При таком методе упаковки экономия составляет менее 50%. Голее сложные методы упаковки изображений позволяют добиться значительно лучших результатов. Например, алгоритм JPEG (от названия разработавшей его группы — Joint Photographic Experts Group) способен упаковывать графические изображения в несколько десятков раз без заметной потери качества.
Чтобы решить проблему большого объёма информации при записи фильмов, например, сохраняют не кадры, а изменения кадров. К тому же, при упаковке видеоинформации допустимы большие искажения, чем при сжатии статических изображений: кадры меняются быстро, и зритель не успевает рассматривать их детально.
Вводи хранение в компьютере технических чертежей и им подобных графических изображений осуществляется по-другому. Любой чертеж содержит отрезки, окружности, дуги. Например, положение каждого отрезка на чертеже можно задать координатами двух точек, определяющих его начало и конец. Окружность — координатами центра и длиной радиуса. Дугу — координатами конца и начала, центра и длиной радиуса. Кроме того, для каждой линии указывается ее тип: тонкая, штрихпунктирная и Т. д. Такая информация о чертеже вводится в компьютер как обычная буквенно-цифровая и обрабатывается в дальнейшем специальными программами. Эта форма представления изображения называется векторной.
Примером современной компьютерной системы автоматизации черчения, ориентированной на векторную форму представления графической информации, является система AutoCAD. Появившиеся в последние годы высококачественные программы векторизации (преобразования графического изображения из растровой формы в векторную) позволили в значительной мере автоматизировать работу по вводу чертежа в память компьютера с помощью сканеров. Хранение чертежа в компьютере в векторной форме на несколько порядков сокращает необходимый объем памяти и значительно облегчает внесение изменений (редактирование).
3. 4 Представление звуковой информации
Развитие аппаратной базы современных компьютеров параллельно с развитием программного обеспечения позволяет сегодня записывать и воспроизводить на компьютерах музыку и человеческую речь. Существуют два способа звукозаписи:
• цифровая запись, при которой реальные звуковые волны преобразуются в цифровую информацию путем измерения звука тысячи раз в секунду;
• MIDI-запись, при которой, вообще говоря, записывается не реальный звук, а определенные команды-указания (какие клавиши надо нажимать, например, на синтезаторе).
MIDI-запись является электронным эквивалентом записи игры на фортепиано.
Для того чтобы можно было воспользоваться первым указанным способом, в компьютере должна быть звуковая карта (плата).
Звук представляет собой звуковую волну с непрерывно меняющейся амплитудой (сила, интенсивность звука) и частотой (высота тона звука). Частота волны (количество «волн» в секунду) измеряется в герцах (Гц). Чем больше амплитуда сигнала, тем громче звук, чем больше частота сигнала, тем выше тон. Человек воспринимает звуковые волны с частотой из диапазона от 20 Гц до 20 000 Гц.
Для того чтобы компьютер мог обрабатывать звук, непрерывный звуковой сигнал должен быть превращен в цифровую последовательность, состоящую из нулей и единиц. Данную функцию выполняет специальный блок, входящий в состав звуковой карты и называемый аналого-цифровым преобразователем (АЦII).
Реальные звуковые волны имеют весьма сложную форму, и для получения их высококачественного цифрового представления требуется высокая частота дискретизации
АЦП производит дискретизацию звукового сигнала по времени путем измерения уровня интенсивности звука несколько тысяч раз в секунду (через равные пpомежyтки). Частота, с которой производят измерения звукового сигнала, называется частотой дискретизации. Например, при записи музыкальных компакт-дисков используют частоту дискретизации 44 кГц, а при записи речи вполне достаточно частоты дискретизации 8 кГц.
В результате дискретизации амплитуды звукового сигнала непрерывная зависимость амплитуды от времени А(t) заменяется на дискретную последовательность стандартных (заранее определенных) уровней громкости. Графически это выглядит как замена гладкой кривой на последовательность «ступенек». Число разрядов, используемых для записи уровней громкости звука, определяет качество звучания
Таким образом, в ходе оцифровки звука мы получаем поток целых чисел, представляющих собой номера стандартных амплитуд сигналов. Получившиеся значения записываются в виде 0 и 1 в память компьютера (в файлы с расширением. WAV).
Аналоговый электрический сигнал (запись на грампластинке, магнитной ленте) теоретически представляет собой точную копию исходной звуковой волны, а цифровой код — лишь более или менее точное приближение. Тем не менее, цифровая звукозапись имеет множество преимуществ. Так, например, цифровые копии всегда идентичны цифровым оригиналам, а это значит, что записи можно копировать много раз без ухудшения качества.
При воспроизведении записанного в компьютерный файл звука имеет место обратное преобразование: из дискретной цифровой формы — в непрерывную аналоговую. Это преобразование осуществляет устройство, находящееся на звуковой плате и называемое цифро-аналоговый преобразователь (ЦАП).
Хранение звука в виде цифровой записи занимает достаточно много места в памяти компьютера. В качестве примера оценим объем файла, в котором хранится стереоаудио звучание длительностью 1 секунда. При этом при оцифровке звука использовалось 65 536 стандартных уровней звука (для хранения номера уровня требуется 16 бит), а частота дискретизации равна 48 кГц. Следовательно, для хранения в компьютере 1 секунды звучания в оцифрованном виде при заданных характеристиках оцифровки нам требуется
16 бит. 48 000 • 2 = 1 536 000 бит = 192 000 байт = 187,5 Кб.
Умножение на коэффициент 2 связано с тем, что хранится стереозвук.
MIDI-запись была разработана в начале 80-х годов ХХ века (MIDI — Musical Instrument Digital Interfase — интерфейс цифровых музыкальных инструментов). MIDI-иxформация представляет собой команды, а не звуковую волну. Эти команды — инструкции синтезатору. В качестве команды музыкальному синтезатору может передаваться указание нажать или отпустить определенную клавишу, изменить высоту или тембр звучания, изменить силу давления на клавиатуру, включить или выключить полифонический режим и Т. П. MIDI–команды делают запись музыкальной информации более компактной, чем цифровая запись. Однако для записи MIDI-команд вам потребуется устройство, имитирующее клавишный синтезатор, которое воспринимает MIDI-команды и при их получении может генерировать соответствующие звуки.
Из всех видов информации, представимых и обрабатываемых в компьютерах, звуковая информация хуже всего поддается упаковке. Это связано с тем, что звуковые сигналы обладают малой избыточностью (в частности, в закодированных звуковых фрагментах редко появляются повторяющиеся последовательности байтов).
Система счисления — способ записи чисел с помощью заданного набора специальных знаков (цифр).
Базис – это последовательность чисел, каждое из которых задает значение цифры «по месту» или «вес» каждого разряда.
Основание системы счисления — отношение весов соседних разрядов основной позиционной системы счисления.
Непозиционная система счисления — система счисления, в которой вес цифры не зависит от ее положения.
Универсальная система счисления — система счисления, которая позволяет записать любое вещественное число (конечной или бесконечной последовательностью цифр).
Неуниверсальная система счисления — система счисления, которая позволяет записать лишь относительно небольшие числа, иногда только целые (либо наоборот, только меньшие единицы).
Основная система счисления — позиционная система счисления, в которой вес каждой цифры изменяется в одно и то же число раз при ее переносе из любого разряда в соседний с ним.
Неосновная система счисления — позиционная система счисления, в которой соотношение весов соседних разрядов может меняться.
Традиционная система счисления — система счисления, в которой запись числа состоит из двух частей — целой и дробной. Количество цифр перед разделяющей эти части запятой (точкой) заранее не известно и может быть сколь угодно большим. Фактически запись числа образует две последовательности цифр, разбегающиеся влево и вправо от запятой.
Информационная система счисления — система счисления, в которой запись числа (в отличие от традиционной) состоит из единственной последовательности цифр. При этом каждая очередная цифра (бит) уточняет значение числа (его положение на оси).
5. Переход к другому основанию
Любая позиционная система счисления характеризуется тем, что базисом этой системы являются последовательные степени основания, иначе говоря, число единиц соответствующие основанию образуют единицу следующего разряда.
Так неотрицательное число, а в любой системе счисления можно записать как
Таким образом, позиционная система счисления позволяет с помощью заранее ограниченного набора цифр записать в виде суммы степеней основания системы.
На этом и основывается перевод из любой позиционной системы счисления в десятичную систему.
5. 1 Перевод из произвольной позиционной системы счисления в десятичную систему.
Для перевода из любой позиционной системы счисления в десятичную систему используется следующий алгоритм:
Пронумеруем цифры в изначальной записи числа справа налево, начиная с нуля (номера соответствуют степени основания в многочлене )
Умножим каждое число на соответствующую степень основания.
Складываем получившиеся произведения.
11012 =1*23 + 1*22 + 0*21+ 1*20= 8+4+0+1=1310
1204205= 1*55+2*54+0*53+4*52+2*51+0*50= 3125+1250+0+100+10+0=448510
5. 2 Перевод из десятичной системы в произвольную позиционную систему счисления
Для перевода из десятичной системы счисления в любую позиционную необходимо придерживаться следующего алгоритма:
1. Делим исходное число на основание нацело в десятичной системы счисления и записываем в качестве нового значения десятичного целую часть результата от деления.
2. Остаток от деления (он должен быть не больше основания данной системы) записываем начиная с последнего.
4410 переведём в двоичную систему
44 делим на 2. частное 22, остаток 0
22 делим на 2. частное 11, остаток 0
11 делим на 2. частное 5, остаток 1
5 делим на 2. частное 2, остаток 1
2 делим на 2. частное 1, остаток 0
1 делим на 2. частное 0, остаток 1
Частное равно нулю, деление закончено. Теперь записав все остатки, справа налево получим число 1011002
5. 3 Перевод в машинной группе.
Для этого типа операций существует упрощенный алгоритм.
Для восьмеричной — разбиваем число на триады, для шестнадцатеричной — разбиваем на тетрарды, преобразуем триады по таблице
Пример: преобразуем 1011002 восьмеричная — 101 100 → 548 шестнадцатеричная — 0010 1100 → 2C16
Обратный перевод из восьмеричной и шестнадцатеричной в двоичную осуществляется за счет замены цифр соответствующими триадами и тетрардами.
5. 4 Дробное счисление в других системах счисления
До этого в рассмотренных примерах показателем степени основания системы счисления являлось натуральное число, но ничто не мешает перевести показатель степени в диапазон целых чисел, т. е. расширить его в отрицательную полуплоскость. При этом формула, данная в определении будет, также верна.
Рассмотрим пример: число 103,625 можно представить как
Таким образом, из примера видно, что не только целое, но и дробное число можно представить как комбинацию из цифр системы счисления.
5. 4. 1 Перевод из произвольной системы счисления в десятичную систему.
Рассмотрим пример перевода двоичного числа 1100,0112 в десятичное систему. Целая часть этого числа равна 12 (см. выше), а вот перевод дробной части рассмотрим подробнее:
Итак, число 1100,0112 = 12,37510.
Точно также осуществляется перевод из любой системы счисления, только вместо «2» ставится основание системы.
Для удобства перевода, целую и дробную части числа почти всегда переводят по отдельности, а результат потом суммируют.
5. 4. 2 Перевод из двоичной системы в 8- и 16-ричную
Перевод дробной части из двоичной системы счисления в системы счисления с основаниями 8 и 16 осуществляется точно так же, как и для целых частей числа, за тем лишь исключением, что разбивка на триады и тетрады идёт вправо от десятичной запятой, недостающие разряды дополняются нулями справа. Например, рассмотренное выше число 1100,0112 будет выглядеть как 14,38 или C,616.
5. 4. 3 Перевод из десятичной системы в произвольную систему
Для перевода дробной части числа в другие системы счисления нужно обратить целую часть в нуль и начать умножение получившегося числа на основании той системы, в которую нужно перевести. Если в результате умножения будут снова появляться целые части, их нужно повторно обращать в нуль, предварительно запомнив (записав) значение получившейся целой части. Операция заканчивается, когда дробная часть полностью обратится в нуль. Ниже приводится пример перевода числа 103,62510 в двоичную систему счисления.
Переводим целую часть по правилам, описанным выше, получаем 10310 = 11001112.
0,625 умножаем на 2. Дробная часть 0,250. Целая часть 1.
0,250 умножаем на 2. Дробная часть 0,500. Целая часть 0.
0,500 умножаем на 2. Дробная часть 0,000. Целая часть 1.
Итак, сверху вниз получаем число 1012
Точно также осуществляется перевод в системы счисления с любым основанием.
Сразу нужно отметить, что этот пример специально подобран, в общем случае очень редко удаётся завершить перевод дробной части числа из десятичной системы в другие системы счисления, а потому, в подавляющем большинстве случаев, перевод можно осуществить с какой либо долей погрешности. Чем больше знаков после запятой — тем точнее приближение результата перевода к истине. В этих словах легко убедиться, если попытаться, например, перевести в двоичный код число 0,626.
6. Арифметические действия в позиционных системах счисления.
Все позиционные системы счисления одинаковы, а именно, во всех них арифметические действия выполняются по одним и тем же правилам:
• Справедливы все законы: сочетательный, переместительный, распределительный;
• Справедливы все правила арифметических действий, которые действуют в десятичной системе счисления;
• Правила выполнения арифметических действий опираются на таблицу сложения и умножения Р-ичных цифр.
Для того чтобы производить арифметические действия в позиционных системах счисления необходимо знать соответствующие таблицы умножения и сложения.
Из приведенных примеров видно, что при сложении столбиком чисел, в данном случае двоичной системы, как и в любой позиционной системе счисления, в следующий разряд переносится только единица.
Нужно сказать, что само действие выполняется аналогично десятичному: цифры по разрядно складываются и при образовании переполнения, оно переносится в следующий разряд в виде степени образовавшегося переполнения. Так же для выполнения сложения используются соответствующие таблицы
Чтобы найти разность чисел a и b необходимо найти такое число c, a+c=b.
На этом принципе и основано вычитание во всех позиционных системах счисления.
Как известно умножение можно заменить сложением. Например:
Из этого следует, что умножение в других позиционных системах счисления так же можно заменить сложением то есть:
101*11=101+101+101(так 11 в десятичной системе счисления )
Из этого можно сделать вывод, что умножение во всех позиционных система счисления происходит по одному принципу. В основном для умножения различных чисел недесятичных систем счисления используются соответствующие таблицы умножения
Деление-это процесс последовательного вычитания одного числа из другого. При делении в десятичной системе счисления мы отнимаем определенное количество делителей из делимого, то есть, уменьшаем число на определенное количество и получаем необходимое число.
Вывод очевиден, деление во всех позиционных системах счисления происходит по одному и тому же принципу, для сравнения поделим двоичное число 1101102 на 112 и восьмеричное число 554768 на 58:
Так же для работы используются соответствующие таблицы умножения.