Студопедия

КАТЕГОРИИ:

АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Компьютерное представление целых чисел.




 

Целые числа – это простейшие числовые типы данных, с которыми оперирует компьютер. Для представления целых чисел используются специально для них предназначенные типы данных.

Для целых чисел существуют два представления: беззнаковое (только для неотрицательных целых чисел) и со знаком. Очевидно, что отрицательные числа можно представлять только в знаковом виде.

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

Например, в байте (8 разрядов) можно представить беззнаковые числа от 0 до 255.

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

Верхняя граница диапазона допустимых значений для беззнаковых типов рассчитывается по формуле 2k – 1, где k – количество разрядов в ячейке

Знаковые положительные числа в байте можно представить только от 0 до 127.

Старший (левый) разряд отводится под знак числа, остальные

7 разрядов под само число. Максимальное число в знаковом представлении соответствует семи единицам и равно:

 

Формы представления чисел в ЭВМ

Машинным изображением числа называют его представление в разрядной сетке ЭВМ. В вычислительных машинах применяются две формы представления чисел:

естественная форма или форма с фиксированной запятой (точкой);

нормальная форма или форма с плавающей запятой (точкой);

 

Пример:

(естественная форма) 452,34 = 452340*10-3 = 0,0045234*105 = 0,45234*103(нормальная форма)

 

Всякое десятичное число, прежде чем оно попадает в память компьютера, преобразуется по схеме:

X10 → X2 = M1 × [102]r

 

После этого осуществляется ещё одна важная процедура: мантисса с её знаком заменяется кодом мантиссы с её знаком; порядок числа с его знаком заменяется кодом порядка с его знаком.

 

Указанные коды двоичных чисел - это образы чисел, которые и воспринимают вычислительные устройства. Каждому двоичному числу можно поставить в соответствие несколько видов кодов.

 

Существуют следующие коды двоичных чисел:

 Прямой код;

 Обратный код;

 Дополнительный код.

 

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

 

Естественная форма

 

В форме с фиксированной запятой в разрядной сетке выделяется строго определенное число разрядов для целой и для дробной частей числа. Левый (старший) разряд хранит признак знака (0 – "+", 1 – "-") и для записи числа не используется.

 

 

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

 

A = [A] · KА,

 

где А – произвольное число, [A] – машинное изображение числа в разрядной сетке, KА - масштабный коэффициент.

 

Естественная форма числа в неявном, условном виде реализуется формулой:

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

 

С фиксированной запятой числа изображаются в виде последовательности цифр с постоянным для всех чисел положением запятой, отделяющей целую часть от дробной(например, 32,54; 0,0036; –108,2). Форма представления чисел с фиксированной запятой упрощает аппаратную реализацию ЭВМ, уменьшает время выполнения машинных операций, однако при решении задач на машине необходимо постоянно следить за тем, чтобы все исходные данные, промежуточные и окончательные результаты находились в допустимом диапазоне представления. Если этого не соблюдать, то возможно переполнение разрядной сетки, и результат вычислений будет неверным. От этих недостатков в значительной степени свободны ЭВМ, использующие форму представления чисел с плавающей точкой, или нормальную форму. В современных компьютерах форма представления чисел с фиксированной запятой используется только для целых чисел.

 

2. Схемы контроля. Цели и задачи контроля. Мажоритарные элементы. Таблица функционирования. Схема голосования. Контроль с использованием кодов Хемминга.

 

Сложность цифровых устройств (ЦУ) определяет важность операции контроля и диагностики их функционирования. Т. о. схемы контроля осуществляют диагностику ЦУ.

Цели и задачи контроля могут быть разные:

1.Задача предотвращения ошибок.

2.Задача выявления ошибок. Методы выявления: 1.Дублирование или резервирование. 2.Использование специальных кодов.

3.Задача маскировки (исправления ошибок). Методы: троекратное дублирование с выборкой результатов путем голосования.

Мажоритарные элементы – задача произвести голосование и подключить к выходу сигнал соответствующий большинству из входных. Количество входов мажоритарного элемента должно быть нечетным, практически 3 или 5.

Таблица функционирования мажоритарного элемента:

 

F1 F2 F3 F a1 a0
0 0 0 0 0 0
0 0 1 0 1 1
0 1 0 0 1 0
0 1 1 1 0 1
1 0 0 0 0 1
1 0 1 1 1 0
1 1 0 1 1 1
1 1 1 1 0 0

Схема голосования:

F – выход мажоритарного элемента.

а1 а0 – ст. и мл. разряды двухразрядного кода, указывающие номер отказавшего канала.

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

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

Результаты проверки образуют слово наз. синдромом. Синдром указывает номер разряда в котором произошла ошибка.

Процесс выявления и исправления ошибок. (01100111)

Правильная передача слова с контрольным разрядом. Пусть в 6 разряде произошла ошибка. Производится 3 проверки:

1) по нечетным разрядам: нечетность сохранилась – 0,

2) по четным разрядам: четность не сохранилась – 1,

3) по разрядам без контрольного разряда: четность не сохранилась – 1.

110=6 – номер разряда где произошла ошибка. Устраняем ее

 

3. Операторы организации циклов. Дать понятие о цикличе­ском процессе. Описать структуру операторов цикла с постусловием и предусло­вием, установить их отличия друг от друга. Дать понятие об опера­торе цикла с параметром, его видах, структуре. Продемонстрировать обозначение операторов цикла на блок-схеме, привести примеры программ, их использующих.

 

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

Определения

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

Безусловные циклы

Иногда в программах используются циклы, выход из которых не предусмотрен логикой программы. Такие циклы называются безусловными, или бесконечными. Специальных синтаксических средств для создания бесконечных циклов, ввиду их нетипичности, языки программирования не предусматривают, поэтому такие циклы создаются с помощью конструкций, предназначенных для создания обычных (или условных) циклов. Для обеспечения бесконечного повторения проверка условия в таком цикле либо отсутствует (если позволяет синтаксис, как, например, в цикле LOOP…END LOOP языка Ада), либо заменяется константным значением (while true do … в Паскале). В языке С используется цикл for(;;) с незаполненными секциями.

Цикл с предусловием

Цикл с предусловием — цикл, который выполняется пока истинно некоторое условие, указанное перед его началом. Это условие проверяется до выполнения тела цикла, поэтому тело может быть не выполнено ни разу (если условие с самого начала ложно). В большинстве процедурных языков программирования реализуется оператором while, отсюда его второе название — while-цикл. На языке Pascal цикл с предусловием имеет следующий вид:

while <условие> do

begin

<тело цикла>

end;

На языке С++:

while(<условие>)

{

<тело цикла>

}

Цикл с постусловием

Цикл с постусловием — цикл, в котором условие проверяется после выполнения тела цикла. Отсюда следует, что тело всегда выполняется хотя бы один раз. В языке Паскаль этот цикл реализует оператор repeat..until; в Си — do…while.

На языке Pascal цикл с постусловием имеет следующий вид::

repeat

<тело цикла>

until <условие выхода>

На языке Си:

do

{

<тело цикла>

}

while(<условие продолжения цикла>)

 

 

ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ № 4

1. Опишите, какие числа в ЭВМ представляют в естественной форме? Обоснуйте особенности выполнения арифметических действий над числами в естественной форме. Приведите примеры выполнения операций сложения и вычитания над целыми числами, представленными: а) одним байтом; б) двумя байтами.

 

Машинным изображением числа называют его представление в разрядной сетке ЭВМ. В вычислительных машинах применяются две формы представления чисел:

естественная форма или форма с фиксированной запятой (точкой);

нормальная форма или форма с плавающей запятой (точкой);

Пример:

(естественная форма) 452,34 = 452340*10-3 = 0,0045234*105 = 0,45234*103(нормальная форма)

Всякое десятичное число, прежде чем оно попадает в память компьютера, преобразуется по схеме:

X10 → X2 = M1 × [102]r

После этого осуществляется ещё одна важная процедура:

 мантисса с её знаком заменяется кодом мантиссы с её знаком;

 порядок числа с его знаком заменяется кодом порядка с его знаком.

Указанные коды двоичных чисел - это образы чисел, которые и воспринимают вычислительные устройства. Каждому двоичному числу можно поставить в соответствие несколько видов кодов.

Существуют следующие коды двоичных чисел:

 Прямой код;

 Обратный код;

 Дополнительный код.

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

 Естественная форма

В форме с фиксированной запятой в разрядной сетке выделяется строго определенное число разрядов для целой и для дробной частей числа. Левый (старший) разряд хранит признак знака (0 – "+", 1 – "-") и для записи числа не используется.

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

A = [A] · KА,

где А – произвольное число, [A] – машинное изображение числа в разрядной сетке, KА - масштабный коэффициент.

Естественная форма числа в неявном, условном виде реализуется формулой:

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

С фиксированной запятой числа изображаются в виде последовательности цифр с постоянным для всех чисел положением запятой, отделяющей целую часть от дробной(например, 32,54; 0,0036; –108,2). Форма представления чисел с фиксированной запятой упрощает аппаратную реализацию ЭВМ, уменьшает время выполнения машинных операций, однако при решении задач на машине необходимо постоянно следить за тем, чтобы все исходные данные, промежуточные и окончательные результаты находились в допустимом диапазоне представления. Если этого не соблюдать, то возможно переполнение разрядной сетки, и результат вычислений будет неверным. От этих недостатков в значительной степени свободны ЭВМ, использующие форму представления чисел с плавающей точкой, или нормальную форму. В современных компьютерах форма представления чисел с фиксированной запятой используется только для целых чисел.

Прямой код

Представление числа в привычной форме "знак"-"величина", при которой старший разряд ячейки отводится под знак, а остальные - под запись числа в двоичной системе, называется прямым кодом двоичного числа. Например, прямой код двоичных чисел 1001 и -1001 для 8-разрядной ячейки равен 00001001 и 10001001 соответственно.

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

Например,

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

Прямой код двоичного числа(а это либо мантисса, либо порядок) образуется по такому алгоритму:

 Определить данное двоичное число - оно либо целое (порядок), либо правильная дробь (мантисса).

 Если это дробь, то цифры после запятой можно рассматривать как целое число.

 Если это целое и положительное двоичное число, то вместе с добавлением 0 в старший разряд число превращается в код. Для отрицательного двоичного числа перед ним ставится единица.

Например, 

Обратный код

Обратный код положительного двоичного числа совпадает с прямым кодом.Для отрицательного числа все цифры числа заменяются на противоположные (1 на 0, 0 на 1), а в знаковый разряд заносится единица.

Например,

 

 Дополнительный код

Дополнительный код положительного числа равен прямому коду этого числа. Дополнительный код отрицательного числа m равен 2k - |m|, где k - количество разрядов в ячейке.Также дополнительный код отрицательного числа образуется путём прибавления 1 к обратному коду.

При представлении целых чисел со знаком старший (левый) разряд отводится под знак числа, и под собственно число остаётся на один разряд меньше.

Алгоритм получения дополнительного кода отрицательного числа:

модуль отрицательного числа представить прямым кодом в k двоичных разрядах;

значение всех бит инвертировать:все нули заменить на единицы, а единицы на нули(таким образом, #получается k-разрядный обратный код исходного числа);

к полученному обратному коду прибавить единицу.

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

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

Например,

А) (+95)-(+127)=-32 01011111+10000000 +      1       = 11011111=-32

                                  +95    обратный код инкремент

(+95)+(+127)=222; 256-222=34 дополнительный код отрицательного числа (-34)                                                            01011111+01111111=-34

+95      +127  

Б) Аналогично для 2ух байтовых

 

 

2. Регистры и регистровые файлы. Типы регистров. Схема статического регистра. Схема регистрового файла.

 

Регистры самые распространенные узлы цифровых устройств, они оперируют с множеством связанных переменных составляющих слово. Над словами выполняется ряд операций: прием, выдача, хранение, сдвиг в разрядной сетке, поразрядные логические операции. Регистры состоят из разрядных схем, в которых имеются триггеры и логические элементы.

Типы регистров:

1.Паралельные (статические) регистры. В этих регистрах прием и выдача слов производится по всем разрядам одновременно и в них хранятся слова, которые могут быть подвергнуты поразрядным логическим преобразованиям.  

 2.Последовательные (сдвигающие) регистры. В этих регистрах слова принимаются и выдаются разряд за разрядом. Их наз. сдвигающими т. к. тактирующие сигналы при вводе и выводе слов перемещают их в разрядной сетке

Схема статического регистра:

Пример схемы статического регистра, построенного на триггерах D-типа с прямыми динамическими входами, имеющего входы сброса R и выходы с третьим состоянием, управляемые сигналом EZ

 

Параллельно последовательные регистры имеют входы одновременно параллельного и последовательного типа.

Схема регистрового файла:

Из статических регистров составляют блоки регистровой памяти – регистровые файлы.

В микросхеме типа МП 26 можно хранить 4 четырехразрядных слова с возможностью независимой и одновременной записи одного слова и чтения другого.

Информационные входы регистров соединены параллельно, входы адресов записи WA, WB, дают 4 комбинации, которые разрешают «защелкнуть» данные присутствующие на входах D1-4.

Содержание файла вызывается на выходы блока Q1-4 с помощью дешифратора считывания в качестве, которого используются адресные входы мультиплексора, адресами RA, RB

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

 

3. Массивы. Определение, описание, размещение в памяти и их использование. Дать понятие о структурном типе данных – массиве. Дать определение одномерного и двумерного массивов. Показать способы их описания и использо­вания. Показать способы и приемы обработки двухмерных мас­сивов.

 

Массив — это пронумерованная последовательность величин одинакового типа, обозначаемая одним именем.

массив – однородный, упорядоченный структурированный тип данных с прямым доступом к элементам.

Элементы массива располагаются в последовательных ячейках памяти, обозначаются именем массива и индексом. Каждое из значений, составляющих массив, называется его компонентой (или элементом массива).

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

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

Если за каждым элементом массива закреплен только один его порядковый номер, то такой массив называется линейным. Вообще количество индексов элементов массива определяет размерность массива. По этом признаку массивы делятся на одномерные (линейные), двумерные, трёхмерные и т.д.

 

Для размещения массива в памяти ЭВМ отводится поле памяти, размер которого определяется типом, длиной и количеством компонент массива. В языке Pascal эта информация задается в разделе описаний.

 Массив описывается так:

          имя массива : Array [тип индекса] Of базовый тип;

Чаще всего типом индекса является диапазон. Например,

          Var B : Array [1..5] Of Real, R : Array [1..34] Of Char;

— описывается массив В, состоящий из 5 элементов и символьный массив R, состоящий из 34 элементов. Для массива В будет выделено 5*6=30 байт памяти, для массива R — 1*34=34 байта памяти.

Базовый тип элементов массива может быть любым простым или структурированным, за исключением файлового.

Над элементами массивами чаще всего выполняются такие действия, как

а) поиск значений;

б) сортировка элементов в порядке возрастания или убывания;

в) подсчет элементов в массиве, удовлетворяющих заданному условию.

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

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

При описании массива задается требуемый объем памяти под двумерный массив, указываются имя массива и в квадратных скобках диапазоны изменения индексов.

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

образа массива в памяти ЭВМ, то как одномерные, так и многомерные массивы хранятся в виде линейной последовательности своих компонент

Одномерным массивом называется массив, в котором для указания местоположения элемента достаточно одного индекса.

В разделе описания переменных мы объявили тип массива, а затем отнесли переменную к данному типу. В памяти ЭВМ будет отведено место для размещения элементов массива. Размерность (количество элементов) массива определяется при объявлении типа и изменить количество элементов в процессе работы программы нельзя. Можно пользоваться меньшим количеством элементов.

Заполнить элементы одномерного массива значениями можно:

• вводя значения с клавиатуры;

• случайным образом;

• по формуле.

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

Массивом называется упорядоченная последовательность величин, обозначенная одним именем. В языках программирования массивы могут быть одномерные и двухмерные. Если в одномерном массиве указывается имя и номер ячейки, то в двух мерном указывается имя, номер строки и номер столбца, на котором он расположен. Чтобы получить доступ к ячейкам необходимо указать имя массива и его индекс. Один – для одномерного массива и два для двухмерного.

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

Массив - это упорядоченная структура однотипных данных, хранящая их последовательно. Доступ к элементу массива осуществляется через его индекс. Массивы описываются следующим образом:

Имя типа = ARRAY [ диапазоны индексов ] OF тип элемента массива;

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

ПРИМЕР: Три способа описания одного и того же типа массива:

type {1} M1 = array [0..5] of integer;

M2 = array [char] of M1;

M3 = array [-2..2] of M2;

{2} M3 = array [-2..2] of array [char] of array [0..5] of integer;

{3} M3 = array [-2..2,char,0..5] of integer;

var A:M3;

{Обращаться к элементам массива можно следующим образом:}

Begin

read(A[-1,'a',3]);

read(A[1]['x'][0]);

A[1]['c',1]:=100;

end.










Последнее изменение этой страницы: 2018-04-12; просмотров: 463.

stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда...