Цифровые автоматы

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

°, в котором есть сбой. Получили число 0110001. Для исправления ошибки необходимо определить позицию, в которой произошел сбой. Для этого определяем значения контрольных коэффициентов, используя таблицу 2.2.d:

k1 = 0 + 1 + 0 + 1 = 0 нет ошибки;

k2 = 1 + 1 + 0+ 1 = 1 ошибка;

k3 = 0 + 0 +0 + 1 = 1 ошибка.

Номер ошибочного разряда совпадает с суммой позиций контрольных коэффициентов, указавших на наличие ошибки т.е. 2 + 4 = 6. Для исправления ошибки достаточно инвертировать значение 6-го разряда.

 

Задание. Построить код Хемминга для числа А.

A = 30710 = 1001100112

Используя таблицу 2.2.a получаем: , .

 

12345678910111213Разряды кода Хеммингаk1k2И9k3И8И7И6k4И5И4И3И2И1Назначение разрядов100110011Значение разряда

k1 = 1 + 0 + 1 + 1 + 0 + 1 = 0;

k2 = 1 + 0 + 1 + 0 + 0 = 0;

k3 = 0 + 0 +1 + 1 + 1 = 1;

k4 = 1 + 0 + 0 + 1 + 1 = 1.

 

Получим код Хемминга 0011001110011.

При передаче, получили код с ошибкой 0011001110111. Проверяем:

 

k1 = 0 + 1 + 0 + 1 + 1 + 1 + 1 = 1; ошибка;

k2 = 0 + 1 + 0 + 1 + 0 + 1 = 1; ошибка;

k3 = 1 + 0 + 0 +1 + 1 + 1 = 0; нет ошибки;

k4 = 1 + 1 + 0 + 1 + 1 + 1 = 1 ошибка.

Ошибка находится в разряде 1 + 2 + 8 = 11, инвертируем 11-й разряд и получаем исходный код Хемминга.

 

2.3 Контроль по модулю

 

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

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

При цифровом методе контроля, контрольный код числа образуется делением суммы цифр числа на выбранный модуль. Например, определить контрольный код числа 160 по модулю 6. Сумма цифр числа 160 равна 7, делим ее на 6. Получим остаток 1, значит это, контроль числа 160 по модулю 6, при цифровом методе контроля.

Числовой метод контроля

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

Операцию сдвига можно представить как передачу слова из i-го разряда в (i+x) разряд. Поэтому, контроль сдвига можно осуществить по методу четности / нечетности.

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

KA = A mod PKB = B mod P

KA+B = (A + B) mod P = (KA + KB) mod P

KA*B = (A * B) mod P = (KA * KB) mod P

Например, найдем контрольный код чисел A, B и контрольный код арифметических операций над ними, получим:

 

ABA + BA BA * BАрифметические операции над числами8957146335073Значение чисел83266Контроль по модулю 9

Проверка выполненных операций:

KA+B = (8 + 3) mod 9 = 2 нет ошибки;

KAB = (8 3) mod 9 = 5

 

KA*B = (8 * 3) mod 9 = 6 нет ошибки.

 

Задание. Определить контрольные коды чисел A и C по модулю P, а также контрольные коды суммы A + C и разности A C.

 

КА = 307 mod 9 = 1;

KC = 91 mod 9 = 1;

KA+C = (307+91) mod 9 = 398 mod 9 = 2; проверка:

KA+C = (1 + 1) mod 9 = 2 mod 9 = 2 нет ошибки.

KAC = (30791) mod 9 = 216 mod 9 = 0; проверка:

KAC = (1 1) mod 9 = 0 mod 9 = 0 нет ошибки.

 

Цифровой метод контроля

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

 

Задание. Определить контрольные коды чисел A и C по модулю P, а также контрольные коды суммы A + C и разности A C.

 

КА = (3+0+7) mod 9 = 1;

KC = (9+1) mod 9 = 1;

KA+C = (3+0+7+9+1) mod 9 = 20 mod 9 = 2; проверка:

KA+C = (1 + 1) mod 9 = 2 mod 9 = 2 нет ошибки.

KAC = (3+0+791) mod 9 = 0 mod 9 = 0; проверка:

KAC = (1 1) mod 9 = 0 mod 9 = 0 нет ошибки.

 

Глава 3. Построение алгоритма реализации численного метода быстрой сортировки

 

3.1 Математическое описание метода

 

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

Алгоритм быстрой сортировки можно проанализировать на примере. Пусть дан массив M[i] = (9, 11, 12, 3, 19, 1, 5, 17, 10, 18, 3, 19, 17, 9, 12, 20, 20, 19, 2, 5). После первого вызова процедуры QuickS в исходном массиве будет определена его середина (10-й элемент) и переменной X присвоено значение m[10], т.е. 18. После этого массив делится на две части. Далее выполняется обмен элементами по следующему правилу:

При просмотре левой части массива слева направо выполныется поиск такого элемента массива, что M[i]>X, затем при просмотре правой части справа налево отыскивается такой элемент, что M[i]X, не будут обменены с элементами, рассположенными справа от середины и удовлетворяющими условию M[i]<X. В результате этого получим массив из двух частей следующего вида:

9, 11, 12, 3, 19, 1, 5, 17, 10, 18, 3, 19, 17, 9, 12, 20, 20, 19, 2, 5 Число итераций =1

19, 20, 12, 3, 19, 1, 5, 17, 10, 18, 3, 19, 17, 9, 12, 20, 11, 9, 2, 5 Число итераций =2

19, 20, 20, 3, 19, 1, 5, 17, 10, 18, 3, 19, 17, 9, 12, 12, 11, 9, 2, 5 Число итераций =3

19, 20, 20, 19, 19, 1, 5, 17, 10, 18, 3, 3, 17, 9, 12, 12, 11, 9, 2, 5 Число итераций =4

19, 20, 20, 19, 19, 18, 5, 17, 10, 1, 3, 3, 17, 9, 12, 12, 11, 9, 2, 5Число итераций =5

Далее левая часть в свою очередь дробится на две части, и вызывается процедура для сортировки левой части (с 1-го по 6-й элемент)

20, 20, 19, 19, 1