Калькулятор бита чётности

Введите двоичную строку, чтобы добавить или проверить бит чётности.

Строка с контрольным битом

101100100

Добавленный бит0
Единиц с битом4

Читайте объяснение ниже

Зачем двоичной строке ещё один бит

Ряд светлых ячеек данных и одна выделенная контрольная ячейка в конце

Бит чётности дополняет двоичную строку одной цифрой, 0 или 1. Её выбирают так, чтобы во всей строке стало чётное либо нечётное количество единиц. Например, в данных 10110010 четыре единицы. Для чётного контроля справа нужен 0, получится 101100100; для нечётного нужен 1, получится 101100101. При приёме достаточно снова посчитать единицы и сравнить результат с согласованным правилом.

Это простой способ заметить, что при передаче изменился один бит. Контрольная цифра не кодирует содержимое заново и не исправляет ошибку. Если одновременно перевернулись две цифры, общая чётность может остаться прежней. Поэтому надпись «Проверка пройдена» означает только совпадение по одному признаку, а не подтверждение, что вся строка сохранилась без изменений.

Как вычисляется контрольный бит

Сначала считайте только единицы в данных. Нули, включая нули в начале слова, не меняют эту сумму, но остаются частью двоичной строки. При чётном контроле к нечётному числу единиц добавляют 1, к чётному добавляют 0. При нечётном контроле делают наоборот. Так, у 00100101 три единицы: для чётного правила нужен бит 1, а для нечётного бит 0.

Бит чётного контроля = остаток от деления числа единиц на 2

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

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

Что показывают знакомые строки

Учебная задача с четырьмя битами. В слове 1011 три единицы. При чётном контроле бит равен 1, и для передачи получается 10111: четыре единицы. При нечётном контроле бит равен 0, получается 10110: три единицы. Это удобная проверка правила вручную, прежде чем работать с длинной строкой.

Байт из описания последовательной связи. Данные 00100101 содержат три единицы. По чётному правилу справа добавляется 1, и готовая строка 001001011 содержит четыре единицы. По нечётному правилу добавляется 0, и строка 001001010 сохраняет три единицы. При сравнении с записью из руководства проверьте, в каком порядке прибор показывает биты.

Нулевая строка. Для 00000000 число единиц равно нулю, то есть уже чётное. Чётный контроль добавит 0 и даст 000000000. Нечётный добавит 1 и даст 000000001. Ведущие нули здесь нельзя выбрасывать: у слова останется другой размер, хотя число единиц не изменится.

Символ в семибитной записи. Буква A в семибитном ASCII записывается как 1000001 и содержит две единицы. Чётный бит справа равен 0, получается восемь цифр 10000010. Исторически семибитный ASCII действительно иногда дополняли восьмым битом для контроля, о чём напоминает материал NIST об истории ASCII. Расположение бита в конкретном устройстве всё равно нужно сверять с его форматом.

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

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

Когда результата недостаточно

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

Не путайте чётность числа с чётностью количества единиц. Двоичное число 1011 как целое нечётно, потому что заканчивается единицей; для контрольного бита важно, что в его записи три единицы. У 1101 тоже три единицы, а у 1110 также три, хотя последнее число как целое чётно. Если задача состоит именно в переводе числового значения между системами, пригодится перевод двоичного числа в десятичное. При контрольном бите значение числа вообще может не быть предметом задачи.

Калькулятор принимает от 1 до 64 бит данных. В режиме проверки нужна строка от двух до 65 цифр вместе с контрольной. Это граница для удобной ручной работы с одним словом, а не ограничение самого способа: в программе можно проверять последовательности любой длины. Для большого потока сначала определите, проверяется ли каждый байт, кадр или всё сообщение целиком. Иначе математически верный бит окажется приложен не к той группе.

❓ Вопросы и ответы

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

Что именно считают: единицы или нули?

Для бита чётности считают единицы. Нули не меняют их количество, но остаются в строке и задают положение разрядов.

Одинаков ли контрольный бит при чётном и нечётном правиле?

Нет. Для одних и тех же данных биты противоположны: если чётное правило требует 0, нечётное потребует 1, и наоборот.

Почему начальные нули не исчезают из ответа?

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

Можно ли вставить двоичное слово с пробелами?

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

Как проверить строку, если контрольный бит стоит слева?

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

Означает ли успешная проверка отсутствие ошибок?

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

Может ли проверка исправить повреждённый бит?

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

Учитываются ли стартовый и стоповый биты последовательного кадра?

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

Похожие калькуляторы

Возможно вам пригодятся ещё несколько калькуляторов по данной теме:

Есть что добавить?

Напишите своё мнение, комментарий или предложение.