Введение
Биты, добавленные к двоичной строке для обнаружения ошибок. 7 бит данных (количество 1 бит) 8 бит, включая паритет, четный нечетный 0000000 0 00000000 00000001 1010001 3 10100011 10100010 11010014 11010010 11010011 1111111 7 11111111 11111110
7 bits of data (count of 1 bits) 8 bits including parity even odd 0000000 0 00000000 00000001 1010001 3 10100011 10100010 11010014 11010010 11010011 1111111 7 11111111 11111110
A parity bit, or check bit, is a bit added to a string of binary code. Parity bits are a simple form of error detecting code. Parity bits are generally applied to the smallest units of a communication protocol, typically 8 bit octets (bytes), although they can also be applied separately to an entire message string of bits. The parity bit ensures that the total number of 1 bits in the string is even or odd. Accordingly, there are two variants of parity bits: even parity bit and odd parity bit. In the case of even parity, for a given set of bits, the bits whose value is 1 are counted. If that count is odd, the parity bit value is set to 1, making the total count of occurrences of 1s in the whole set (including the parity bit) an even number. If the count of 1s in a given set of bits is already even, the parity bit's value is 0. In the case of odd parity, the coding is reversed. For a given set of bits, if the count of bits with a value of 1 is even, the parity bit value is set to 1 making the total count of 1s in the whole set (including the parity bit) an odd number. If the count of bits with a value of 1 is odd, the count is already odd so the parity bit's value is 0. Even parity is a special case of a cyclic redundancy check (CRC), where the 1 bit CRC is generated by the polynomial x+1.
Бит паритета, или контрольный бит, – это бит, добавляемый к строке двоичного кода. Биты паритета представляют собой простую форму кода обнаружения ошибок. Биты паритета обычно применяются к наименьшим единицам протокола связи, как правило, 8-битным октетам (байтам), хотя они также могут применяться отдельно ко всей строке сообщения из битов. Бит паритета обеспечивает, чтобы общее количество единичных битов в строке было четным или нечетным. Соответственно, существует два варианта битов паритета: бит четного паритета и бит нечетного паритета. В случае четного паритета для заданного набора битов подсчитываются биты со значением 1. Если этот подсчет нечетный, значение бита паритета устанавливается в 1, что делает общее количество единиц во всем наборе (включая бит паритета) четным числом. Если количество единиц в заданном наборе битов уже четное, значение бита паритета равно 0. В случае нечетного паритета кодирование происходит наоборот. Для заданного набора битов, если количество битов со значением 1 четное, значение бита паритета устанавливается в 1, что делает общее количество единиц во всем наборе (включая бит паритета) нечетным числом. Если количество битов со значением 1 нечетное, подсчет уже нечетный, поэтому значение бита паритета равно 0. Четный паритет является частным случаем циклического избыточного кода (CRC), где 1-битный CRC генерируется многочленом x+1.
7 bits of data (count of 1 bits) 8 bits including parity even odd 0000000 0 00000000 00000001 1010001 3 10100011 10100010 11010014 11010010 11010011 1111111 7 11111111 11111110
A parity bit, or check bit, is a bit added to a string of binary code. Parity bits are a simple form of error detecting code. Parity bits are generally applied to the smallest units of a communication protocol, typically 8 bit octets (bytes), although they can also be applied separately to an entire message string of bits. The parity bit ensures that the total number of 1 bits in the string is even or odd. Accordingly, there are two variants of parity bits: even parity bit and odd parity bit. In the case of even parity, for a given set of bits, the bits whose value is 1 are counted. If that count is odd, the parity bit value is set to 1, making the total count of occurrences of 1s in the whole set (including the parity bit) an even number. If the count of 1s in a given set of bits is already even, the parity bit's value is 0. In the case of odd parity, the coding is reversed. For a given set of bits, if the count of bits with a value of 1 is even, the parity bit value is set to 1 making the total count of 1s in the whole set (including the parity bit) an odd number. If the count of bits with a value of 1 is odd, the count is already odd so the parity bit's value is 0. Even parity is a special case of a cyclic redundancy check (CRC), where the 1 bit CRC is generated by the polynomial x+1.
Паритет
В математике паритет может относиться к четности или нечетности целого числа, которая, при записи числа в двоичной форме, может быть определена путем анализа только его младшего бита. В информационных технологиях паритет относится к четности или нечетности количества единичных битов в любом наборе двоичных цифр. Поскольку паритет определяется состоянием каждого бита, это свойство паритета – зависимость от всех битов и изменение значения с четного на нечетный при изменении любого одного бита – позволяет использовать его в схемах обнаружения и исправления ошибок. В телекоммуникациях паритет, используемый некоторыми протоколами, предназначен для обнаружения ошибок. Передающая среда предварительно настроена на обоих концах для согласования использования либо нечетного, либо четного паритета. Для каждой строки битов, готовых к передаче (пакета данных), отправитель вычисляет бит паритета (0 или 1), чтобы привести ее в соответствие с согласованным паритетом – четным или нечетным. Получатель пакета сначала проверяет, соответствует ли паритет всего пакета предварительной договоренности, а затем, в случае обнаружения ошибки паритета в пакете, запрашивает его повторную передачу. В информатике паритетная полоса или паритетный диск в RAID обеспечивает исправление ошибок. Биты паритета записываются из расчета один бит паритета на n битов, где n – количество дисков в массиве. При возникновении ошибки чтения каждый бит в поврежденной области пересчитывается на основе набора из n битов. Таким образом, использование одного бита паритета создает "избыточность" для области размером от одного бита до размера одного диска. См. ниже. В электронике транскодирование данных с использованием паритета может быть очень эффективным, поскольку XOR-вентили выдают эквивалент контрольного бита, создающего четный паритет, а логические схемы на основе XOR легко масштабируются для любого количества входов. Структуры XOR и AND составляют основу большинства интегральных схем.
Использование
Из-за своей простоты паритет используется во многих аппаратных приложениях, где операцию можно повторить в случае возникновения проблем или просто полезно обнаружить ошибку. Например, шины SCSI и PCI используют паритет для обнаружения ошибок передачи, а многие кэши инструкций микропроцессоров включают защиту паритетом. Поскольку данные кэша инструкций являются лишь копией основной памяти, их можно отбросить и повторно запросить, если обнаружено повреждение. В последовательной передаче данных распространенным форматом является 7 бит данных, бит четности и один или два стоповых бита. Этот формат позволяет разместить все 7-битные символы ASCII в 8-битном байте. Возможны и другие форматы: 8 бит данных плюс бит паритета могут передавать все 8-битные байтовые значения. В контексте последовательной связи паритет обычно генерируется и проверяется аппаратным интерфейсом (например, UART), а при приеме результат становится доступным процессору, такому как ЦП (а также, например, операционной системе), через бит статуса в аппаратном регистре интерфейса. Восстановление после ошибки обычно выполняется путем повторной передачи данных, детали которой обычно обрабатываются программным обеспечением (например, подпрограммами ввода-вывода операционной системы). Когда общее количество передаваемых битов, включая бит паритета, четное, нечетный паритет имеет преимущество, поскольку шаблоны, состоящие только из нулей или только из единиц, обнаруживаются как ошибки. Если общее количество битов нечетное, обнаруживается только один из шаблонов как ошибка, и выбор можно сделать, исходя из того, какая ошибка ожидается чаще.
История
Паритный трек присутствовал на первой магнитной ленте для хранения данных в 1951 году. Парность в этой форме, применяемая к нескольким параллельным сигналам, известна как поперечная проверка избыточности. Её можно комбинировать с паритетом, вычисляемым по нескольким битам, передаваемым по одному сигналу – продольной проверкой избыточности. В параллельной шине на каждый параллельный сигнал приходится один бит продольной проверки избыточности. Паритет также использовался как минимум в некоторых системах ввода данных с бумажной перфоленты (которые предшествовали системам магнитной ленты). В системах, продаваемых британской компанией ICL (ранее ICT), бумажная лента имела 8 отверстий, расположенных поперек ленты, при этом восьмое отверстие предназначалось для паритета. Для данных использовалось 7 позиций, например, 7-битный ASCII. В восьмой позиции пробивалось отверстие в зависимости от количества пробитых отверстий в позициях данных.