Двоичная система счисления и представление информации в компьютере.



Устройство и функционирование компьютеров

Компьютер – универсальная вычислительная машина.

Из трех составляющих информационного обслуживания – оборудование, программное обеспечение, организация – одинаково важны все три. Если ставить одну из них на первое место в ущерб другим (а чаще всего недооценивается организация информационного обслуживания), то это неизбежно уменьшит эффективность остальных. Поэтому менеджер должен иметь представление о каждой из этих составляющих. Однако начинать изучение, по нашему мнению, следует с оборудования.

Вряд ли выпускник вуза, не специализированного на изучении компьютеров, будет непосредственно иметь дело с большим компьютером и тем более c суперкомпьютером. Однако можно гарантировать, что с персональными компьютерами, с локальными сетями и c Интернетом он будет сталкиваться регулярно. Конечно, можно пользоваться всеми этими вещами, не задумываясь над тем, как они устроены. Но практика показывает, что отсутствие хотя бы общего представления о работе компьютера, о функционировании компьютерных сетей, о возможностях систем управления базами данных, о принципах организации Интернета существенно ограничивает профессиональный рост менеджеров, не позволяя им полноценно принимать участие, например, в проектах по внедрению и развитию информационных систем на предприятии.

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

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

При изложении принципов работы компьютера основное внимание уделяется концептуальным вещам. Это делается по двум причинам: во-первых, обилие цифр часто отвлекает от сути явления или метода, во-вторых, характеристики устройств меняются с такой скоростью, что они устаревают прежде, чем учебник выходит в свет. Однако во многих случаях приводятся конкретные значения параметров, чтобы дать более точное представление по тому или иному вопросу.

Начнем с понятия алгоритма. Понятие алгоритма является центральным во всем курсе информатики. Слово «алгоритм» принято связывать с именем арабского ученого Аль-Хорезми. При рассмотрении практических вопросов, которым, в основном, и посвящена данная книга, нас интересует не столько формальное определение данного понятия, сколько его использование. Один из фундаментальных подходов к определению алгоритма, тесно связанный с практикой, рассматривает алгоритм в единстве с исполнителем алгоритма и системой инструкций – действий, который исполнитель алгоритма умеет выполнять. Алгоритм представляет собой такую последовательность действий исполнителя алгоритма, которая приводит к поставленной цели.

В теории алгоритмов каждое элементарное действие определено строго формально, то есть полностью заданы состояния исполнителя до и после этого действия. Исполнителя алгоритма можно назвать вычислительной машиной. То, над чем производятся действия исполнителя, в теории обычно является числами или символами некоторого алфавита. Алгоритм должен быть составлен предварительно до начала работы машины. В такой ситуации его принято называть программой.

Понятие интуитивного алгоритма существенно шире, чем понятие программы. Очень многие правила или инструкции во многих областях знания или практической жизни являются алгоритмами. Таковы, например, правила поведения в обществе, должностные инструкции, инструкции к бытовой технике и т.д.

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

Весь процесс программирования подразу­мевает, прежде всего, формулировку цели программы, затем анализ содержания задачи и, наконец, создание программы для компьютера. Для этого программист должен уметь учитывать все ситуации, которые могут встретиться в процессе работы программы, и предусмотреть для них правильное действие.

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

Проблемами алгоритмизации при решении математических задач занимались Паскаль, Декарт, Лейбниц, Лаплас и многие другие великие ученые. Особый интерес в этой области был инициирован Гильбертом в связи с его знаменитыми проблемами. В двадцатом веке формальная теория алгоритмов бурно развивалась. Можно назвать такие фамилии, как Гедель, Клини, Черч, Тьюринг, Пост, Марков, Петер.

Параллельно с теорией делались попытки создать практически работающие вычислительные устройства. В 1642г. Паскаль изобрел устройство, выполняющее сложение чисел, а в 1673г. Лейбниц сконструировал арифмометр, позволяющий выполнять четыре арифметических действия. В первой половине XIX в. английский математик Чарльз Бэббидж попытался построить универсальную машину, которая должна была выполнять любые вычисления без участия человека. Программы для нее вводилась с помощью перфокарт, которые уже тогда употреблялись в ткацких станках. Реально такая машина (но не механическая, а электронная) была построена в США в 1943г.

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

Текущее состояние компьютера определяется совокупностью данных, хранящихся в памяти компьютера, и текущим положением программы, выполняемой компьютером. Различается входная, промежуточная и выходная информация. Входная информация помещается в память перед началом программы, выходная информация остается в памяти после конца программы. Одна элементарная операция при работе машины заключается в том, что изменяется содержимое нескольких участков памяти. Само изменение зависит от других данных и задается формальной инструкцией - командой. Все возможные команды составляют конечный набор данных. Программой называется упорядоченная совокупность команд.

Эта конструкция почти без изменений реализована в современных компьютерах. Компьютером представляет собой универсальное вычислительное устройство, предназначенное для выполнения произвольных алгоритмов. Этим он отличается от вычислительных устройств, являющихся частью производственных комплексов и выполняющих внутри них специальные функции. Любая информация хранится в памяти компьютера в цифровой форме (в двоичной системе счисления) и размещается в специальном устройстве, которое называется оперативной памятью компьютера. Алгоритм отображается в компьютере в форме машинной программы и состоит из отдельных инструкций – машинных команд. Очередная машинная команда производит с данными в оперативной памяти определенные действия. Число различных типов машинных команд ограничено.

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

Отметим основные свойства алгоритмов, лежащих в основе работы современных компьютеров:

¨ Привязка к языку. Каждый конкретный алгоритм формулируется в рамках некоторой теории и оформляется с использованием средств, определенных в этой теории. Обычно это некоторый алгоритмический язык, например язык программирования. Алгоритмический язык представляет собой систему обозначений и правил для записи алгоритмов и особенностей из выполнения.

¨ Дискретность. Алгоритм представляет собой структурированное конечное множество элементарных действий; все типы элементарных действий задаются заранее списком.

¨ Детерминированность. В каждый момент времени работы алгоритма выбор следующей команды определяется однозначно.

¨ Массовость. Алгоритм должен быть применим ко многим различным наборам входной информации, а не к одному единственному.

¨ Повторяемость.  Алгоритм должен давать один и тот же результат при одних и тех же входных значениях.

¨ Конечность. Алгоритм должен давать решение задачи за конечное число шагов.

Понятие интуитивного алгоритма существенно шире, чем понятие программы на компьютере. Очень многие правила или инструкции во многих областях знания или практической жизни являются алгоритмами. Таковы, например, правила поведения в обществе, должностные инструкции, инструкции к бытовой технике и т.д.

Формулировка желаемого результата некоторого действия в большинстве случаев ничего не говорит о содержании самого действия. Очень часто построение алгоритма является очень сложной задачей, требующей оригинальных решений. Проблема в том, что при обычном описании на естественном языке многие детали как очевидные остаются за кадром. Однако если мы фор­му­лируем формальное предписание, которое должно быть истолковано компьютером однозначно и не содержать неопределен­ности, мы должны предусмотреть все возможные варианты развития событий, все варианты возможных дан­ных и правильно на них реагировать. А для этого необходимо иметь аде­кват­ные средства для описания маленьких, элементарных шагов алго­рит­ма и для описания структуры алгоритма.

Алгоритмы для первых компьютеров изображались в форме блок-схем. Блок-схема представляет собой изображение на бумаге. Элементарное действие алгоритма изображается текстом в одном блоке схемы, а линии, соединяющие блоки, указывают после­до­вательность работы блоков. Поскольку реально выбор того или иного продолжения работы зачастую зависит от данных, поступивших на обра­ботку, очередной блок может иметь не одно, а несколько продолжений, и для него необходимо указывать, каким условиям соответствует то или иное продол­жение. Принято проверки такого рода выделять в отдельный блок специ­ального типа (условный блок). Обычный блок имеет одно продолжение, условный блок - несколько продолжений, соответствующих различным вариантам проверки условия. Иногда для удобства условный блок заключается в ромбовидные рамки. Тем или иным обра­зом зачастую выделяют и другие типы блоков (с помощью овальных, косых или иных рамок).

Описание на языке блок-схем очень хорошо читаемо, его легко модифицировать и, главное, оно естественно отражает сущность процесса алгоритмизации задачи. Критерии выделения блока носят отчасти субъек­тивный характер. Общая схема может содержать небольшое число крупных блоков. Крупные блоки также изображаются в виде блок-схемы, состоящей из более мелких блоков, и т.д. Таким образом, в результате получается подробная блок-схема алгоритма решения задачи.

Контрольные вопросы по теме.

1. Каково самое общее предназначение компьютера?

2. Что означает определение «универсальный» по отношении к компьютеру?

3. Что означают определения «дискретный» и «конечный» по отношению к алгоритму?

4. Для чего нужны блок-схемы?

Двоичная система счисления и представление информации в компьютере.

Для представления информации в компьютере используется двоичная система счисления. Мы привыкли для записи чисел использовать десятичную систему счисления. На самом деле эта система счисления не единственная. В общем случае позиционной системой счисления называется способ представления чисел в виде последовательности цифр, при котором вклад цифры в величину числа зависит от положения цифры в записи числа.

Сначала разберемся в том, что собой представляет десятичная система счисления. Начнем с целых чисел. Возьмем какое-либо число, записанное в десятичной системе счисления, например, 397. В этом числе 7 единиц, 9 десятков и 3 сотни, т.е. величина числа равна 7*1+9*10+3*100 = 7*100+9*101+3*102. Аналогично устроена позиционная система счисления по произвольному основанию. В общем случае, пусть число X записывается в системе счисления по основанию M в виде ANAN-1…A2A1A0 (число цифр в записи равно N+1). Тогда величина числа вычисляется по формуле X = A0*M0 + A1*M1 + A2*M2 +…+ AN-1*MN-1 + AN*MN. Здесь A0, A1, A2, …, AN-1, AN – так называемые M-ричные цифры, которые представляют значения от 0 до M-1 включительно.

Например, записанное в семиричной системе счисления число 236417 = 1+4*71+6*72+3*73+2*74 = 1+28+294+1029+4802 = 615410 . Проще вычислить это значение с использованием так называемой схемы Горнера, которая заключается в расстановке скобок в вышеприведенной сумме: 1+4*71+6*72+3*73+2*74 = 1+7*(4+7*(6+(7*(3+7*2) ) ) = 1+7*(4+7*(6+7*17) ) = 1+7*(4+7*125) = 1+7*879 = 615410 .

Как вычислить цифры M-ричного представления числа? Для этого сначала посмотрим, как вычисляются цифры десятичного представления числа. Пусть X снова равно 397. При делении числа 397 на 10 получаем 39 и 7 в остатке. Остаток 7 выражает количество единиц в числе X. Теперь разделим 39 на 10. Получим частное 3 и 9 в остатке. Остаток 9 теперь представляет число лесятков. Наконец, делим 3 на 10 и получаем 0 и 3 в остатке. В результате этой операции получаем количество сотен – 3. Десятичная запись числа состоит из остатков 7, 9 и 3, но стоящих в обратном порядке.

По такой же схеме вычисляются цифры в произвольной M-ричной системе счисления . Возьмем то же число X=39710 (естественно, что величина числа не зависит от той системы счисления, в которой оно записано). Попробуем записать его в пятиричной системе счисления. Для этого разделим его на 5. Получим 79 и 2 в остатке. Запомним первый остаток: A0 = 2. Далее разделим 79 на 5. Получим 15 и 4 в остатке. Запомним второй остаток: A1 = 4. Теперь разделим на 5 число 15. Получим 3 и 0 в остатке. Следовательно, A2 = 0. Последнее деление 3 на 5 дает 0 и 3 в остатке, то есть последняя полученная цифра – это A3 = 3. Равенство частного нулю означает, что процедуру следует завершить. Полученные остатки следует записать в обратном порядке. В результате проделанного вычисления получаем, что 39710 = 30425.

Для дробных чисел формула для вычисления величины числа слегка видоизменяется. Пусть число записано в системе счисления по основанию M в виде AnAn-1…A2A1A0 , A-1A-2…A-h . Тогда его величина вычисляется по формуле

X = A-h*M-h +…+ A-2*M-2+A-1*M-1 + A0*M0 + A1*M1 + A2*M2 +…+ An-1*Mn-1 + An*Mn .

Так, число 1011,0112 представляет собой значение 2-3+2-2+20+21+23 = 11,37510 . Следует отметить, что в европейских языках для разделения целых и дробных разрядов числа вместо запятой используется точка.

В информатике актуальны двоичная и шестнадцатиричная системы счисления. В шестнадцатиричной системе счисления требуется 16 цифр. В качестве шестнадцатиричных цифр используются 10 десятичных цифр от 0 до 9, а также шесть первых букв латинского алфавита: A (10), B (11), C (12), D (13), E (14) и F (15). В двоичной системе счисления всего две цифры: 0 и 1. В соответствии с общим определением число, записанное в двоичной системе счисления, является суммой степеней двойки, соответствующих тем местам в записи числа, на которых стоят единицы. Например, число 10010111012 равно сумме 1+22+23+24+26+29 = 1+4+8+16+64+512 = 60510 .

Для хранения числа в памяти компьютера оно переводится в двоичную систему счисления. Каждая двоичная цифра соответствует одному разряду хранения информации в памяти компьютера – одному биту. В современных компютерах биты хранения информации объединяются в группы по восемь, которые называются байтами. Соответственно при хранении чисел двоичные цифры группируются по восемь. Например, для хранения числа 10011 100111012 требуется два байта. В первый байт записываются цифры 00010011, а во второй – цифры 10011101.

Шестнадцатиричная и двоичная системы счисления связаны между собой. Если в двоичной записи числа сгруппировать двоичные цифры по четыре (считая справа налево), а затем заменить каждую четверку двоичных цифр на шестнадцатиричную цифру, то получится шестнадцатиричное представление числа. Например, если в вышеприведенном примере 10011100111012 разбить двоичные цифры на четыре группы 1 0011 1001 1101, то 12  = 116 , 00112 = 316 , 10012 = 916 , 11012 = D16 , и в результате получается представление числа 10011100111012 в шестнадцатиричной системе: 139D16 . Шестнадцатиричная запись иногда используется, если необходимо указать содержимое нескольких байтов памяти компьютера (например, в руководстве или учебном пособии).

Вся информация в компьютере представляется в цифровой форме. Это естественно для чисел. Для нечисловой информации (например, текста) используется стандартный прием: всевозможные элементарные значения нумеруются, и вместо самих значений хранятся их номера (которые играют роль кодов). Так, при представлении текстовой информации все символы сводятся в таблицу, а текст записывается номерами символов. В любом случае коды нечисловых данных, хранящиеся в компьютере, не имеют содержания вне таблиц нумерации. Количество двоичных разрядов, необходимых для записи наибольшего номера объекта данных, зависит от их общего объема. Наибольшее число, которое в двоичной системе счисления можно записать с помощью N цифр, состоит из N единиц. Это число равно 1+2+4+…+2N-1 = 2N-1 . Например, с помощью восьми двоичных цифр можно различать 28=256 символов текста.

Это рассуждение настолько важно для всей идеологии хранения информации в двоичном коде, что в информатике принято измерять объем не в десятичной системе счисления, а в специальных единицах измерения, использующих степени двойки. Используя то обстоятельство, что 210=1024 не очень отличается от 103-1000, принято 1024 байт называть килобайтом (1Кб). Аналогично мегабайт – это 1024 килобайта (1Мг), а гигабайт – 1024 мегабайта (1Гб). Количество информации в современном мире столь велико, что приходится вводить еще одну единицу – терабайт, равную 1024 гигабайта (1Тб). Если не нужна особая точность, то можно считать, что:

1 терабайт = 1 000 гигабайт = 1 000 000 мегабайт = 1 000 000 000 килобайт = 1 000 000 000 000 байт.

То устройство компьютера, в котором хранится информация, называется оперативным запоминающим устройством (ОЗУ) или оперативной памятью. Если отвлечься от технических деталей, оперативная память компьютера представляет собой линейную последовательность байтов. Длина этой последовательности в современных персональных компьютерах десятки сотни мегабайт. Еще больше память суперкомпьютеров. Для хранения чисел выделяется несколько байтов (от одного до 10). Различают две основных формы представления числа в памяти компьютера. При первом способе все разряды выделенных для хранения числа байтов памяти последовательно нумеруются, и двоичные цифры числа непосредственно записываются в соответствующие биты памяти. Один бит выделяется для представления знака числа (0 – плюс, 1 – минус). При втором способе число представляется в так называемой нормализованной (или экспоненциальной) форме: X=M*10n, где число М (называемое мантиссой) заключено от 1 до 10, число n (называемое порядком) - целое.

Используется несколько форматов представления целых и нормализованных чисел, которые отличаются объемом и наличием или отсутствием знакового бита. От этого зависит диапазон чисел, которые могут быть представлены в этом формате. Например, если заранее известно, что какая то целая величина положительна и не может быть больше 255, то для ее хранения достаточно одного байта. Для хранения величин, изменяющихся в диапазоне от -215 = –32768 до 215-1 = 32767, выделяется два байта. Если целое число не вмещается в этот диапазон, то для его хранения выделяется четыре байта (диапазон от –231 до 231-1).

В принципе, подобный подход годится и для дробных чисел. В память компьютера заносятся цифры числа, но при этом считается, что на определенном месте этой записи стоит десятичная запятая. Такая форма записи называется представлением числа с фиксированной запятой. Максимальное число цифр в числе и конкретное положение запятой определяется форматом числа. Предусмотрено несколько вариантов формата представления чисел с фиксированной запятой в памяти компьютера.

 Представление нормализованных чисел называется представлением числа с плавающей запятой. Он используется для хранения величин, которые могут принимать любые значения. В памяти компьютера порядок и мантисса хранятся отдельно в форме двоичных целых чисел со знаком. В современных компьютерах используется несколько форматов представления чисел с плавающей запятой, которые отличаются общим объемом представления чисел (6, 8 или 10 байтов), а также размерами памяти, отводимой отдельно для мантиссы и порядка. От этого зависят общий диапазон возможных значений числовой величины в компьютере и минимальная ошибка в вычислениях, проистекающая из-за невозможности запоминать в компьютере большее количество знаков после запятой.

В реальной действительности информация разнородна. Обычно делят данные на числовую информацию, текстовую информацию и логическую информацию. Под текстовой информацией понимается линейная последовательность символов. Для представления символа в памяти компьютера используется следующая схема: фиксируется множество допустимых символов текста (обычно их 28 = 256 символов) и каждому символу присваивается номер (от 0 до 255). После этого последовательность символов заменяется на последовательность номеров, которые в памяти компьютера записываются в виде целых двоичных чисел (без знака). Один номер помещается в одном байте памяти (именно поэтому исторически сложилось разбиение памяти на группы по восемь битов, так как оказалось, что оптимальное количество символов – 28, а не, например, 29).

Множество допустимых символов и их номера составляют таблицу кодирования символов. Естественно, эта таблица не должна зависеть от произвола программиста или производителя компьютеров, поскольку передача инфор­мации в этом случае будет сильно затруднена. В настоящее время существует стандарт ASCII (American Standard Code for Informational Interchange), содержащий набор и номера 128 основных символов (коды от 0 до 127) и набор и номера 128 расширенных символов (коды от 128 до 255). Поскольку в этот стандарт не входят символы национальных алфавитов (которых значительно больше, чем 128), в каждой стране 128 кодов расширенных символов (от 128 до 255) заменяются символами национального алфавита. Другими словами, каждый язык с алфавитом, отличным от английского алфавита, устанавливает свой стандарт. Осмысленный текст на одном языке будет бессмысленным на другом. Таким образом, для правильной работы с текстом важна не только сама информация, но и ее интерпретация. Программа, которая правильно интерпретирует колы символов в соответствии с таблицей кодирования в определенном алфавите, называется текстовым драйвером.

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

Для хранения в памяти компьютера более сложных объектов, таких как видеоизображения или звуки, описания этих объектов преобразуются в числовую форму. Способов кодирования такого вида информации существует достаточно много, но в конечном итоге изображение или звук представляются в виде последовательности нулей и единиц, которые размещаются в битах памяти компьютера и при необходимости извлекаются оттуда и интерпретируются определенным образом.

Контрольные вопросы по теме.

1.Переведите 134210 в семиричную систему счисления.

2.Переведите 13425 в десятичную систему счисления.

3.Переведите 134210 в двоичную систему счисления.

4.Переведите 100111010101102 в шестнадцатиричную систему счисления.

5.Что такое представление чисел с плавающей запятой и для чего оно используется?

6.Что такое ASCII-коды?

7.Почему в байте 8 битов?

8.Сколько книг поместится в 1Гб, если книги содержат 500 стр., а на странице примерно 2000 символов?

Принципы работы компьютера.


Дата добавления: 2018-10-26; просмотров: 517; Мы поможем в написании вашей работы!

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






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