Информатика. Курс лекций. Громов Ю.Ю - 24 стр.

UptoLike

димо создать систему, в которой любая битовая комбинация будет содержать нечетное количество единиц. Обычно это дос-
тигается путем добавления к уже существующему коду дополнительного бита, который называется битом четности или
контрольным битом (parity bit), чаще всего помещаемого в старший конец комбинации. В результате восьмиразрядный код
ASCII превращается в девятиразрядный, а шестнадцатиразрядная битовая комбинация в двоичном дополнительном коде
становится семнадцатиразрядной. В каждом случае значение бита четности устанавливается равным 0 или 1, исходя из тре-
бования, чтобы вся битовая комбинация в целом содержала нечетное количество единиц. Как показано на рис. 1.20, символ
А в коде ASCII будет представлен как 101000001 (бит четности равен 1), тогда как символ F в этом же коде будет иметь вид
001000110 (бит четности равен 0). Хотя исходная восьмиразрядная комбинация, представляющая букву А, содержит четное
количество единиц, а аналогичная комбинация, представляющая букву F, – нечетное количество единиц, оба девятиразряд-
ных кода имеют нечетное количество единиц. Если система будет построена указанным образом, то появление битовой ком-
бинации
Рис. 1.20. Представление символов A и F в коде ASCII
с использованием контрольного бита
с четным количеством единиц будет свидетельствовать об ошибке и сигнализировать, что обрабатываемые данные являются
неверными. Описанная выше система контроля четности называется проверкой на нечетность (odd parity), поскольку все
обрабатываемые битовые комбинации должны содержать нечетное количество единиц. Кроме того, существует способ, име-
нуемый проверкой на четность (even parity). В этом случае все обрабатываемые комбинации должны содержать четное ко-
личество единиц, а показателем ошибки является нечетное количество единиц в битовой комбинации.
В наше время использование битов четности является типовым решением для основной памяти машины. Хотя внешне
создается впечатление, что компьютеры используют восьмиразрядные ячейки памяти, в действительности они являются де-
вятиразрядными, причем девятый бит используется как контрольный. Каждый раз, когда в память записывается некоторая
восьмибитовая комбинация, схема управления памятью автоматически добавляет к ней требуемый контрольный бит для по-
лучения девятиразрядной комбинации. При считывании информации схема управления памятью подсчитывает количество
единиц в полученной комбинации. Если ошибка не обнаруживается, контрольный бит удаляется и образуется исходная
восьмиразрядная битовая комбинация. В противном случае схема управления памятью возвращает считанное восьмиразряд-
ное значение с указанием, что оно искажено и может отличаться от исходного.
Длинные битовые комбинации часто дополняются группой контрольных битов, образующих контрольный байт. Каж-
дый бит в этом байте является контрольным и относится к определенной группе битов, разбросанных по основной битовой
комбинации. Например, один контрольный бит может относиться к каждому восьмому биту, начиная с первого, тогда как
другойк каждому восьмому биту, начиная со второго, и т.д. В данном случае легче выявить ошибки, сконцентрированные
в одной области исходной комбинации, поскольку их наличие будет контролироваться группой контрольных битов. Различ-
ные варианты данного подхода к созданию схем контроля называются методом контрольных сумм и методом использования
кода циклического контроля избыточности (CRC).
Коды с исправлением ошибок. Несмотря на то что бит четности является эффективным методом выявления ошибок,
он не дает информации, необходимой для исправления возникшей ошибки. Многих удивляет сам факт, что можно разрабо-
тать коды с исправлением ошибок, позволяющие не только выявлять ошибки, но и исправлять их.
В конце концов, интуиция подсказывает, что мы не в состоянии исправить ошибку в полученном сообщении, если зара-
нее не знаем, о чем там идет речь. Тем не менее, существует довольно простой код, позволяющий исправлять возникающие
ошибки (рис. 1.21).
Для того чтобы понять принцип действия этого кода, сначала необходимо определить дистанцию Хэмминга (Hamming
Рис. 1.21. Код
с исправлением ошибок
Бит
четности
Бит
четности
Символ А в коде ASCII содержит
четное количество единиц
Символ F в коде ASCII содержит
нечетное количество единиц
Вся битовая комбинация содержит
нечетное количество единиц
Вся битовая комбинация содержит
нечетное количество единиц