Skip to content

Калкулатор CRC / XOR / деление по модул 2 с колона

Калкулатор CRC / XOR / деление по модул 2 с колона

CRC / XOR calculator: enter message bits and generator poly for modulo-2 division.

Output: CRC remainder after XOR long division.

Output: CRC remainder after XOR long division.

Калкулаторът CRC / XOR / Modulo-2 изпълнява двоично деление без преноси и заеми, като използва побитово XOR на всяка стъпка. Това е аритметиката зад цикличните излишни кодове (CRC): към съобщението се добавят нулеви битове и се дели на генераторен многочлен, а остатъкът става CRC контролна сума. Понеже събирането и изваждането по модул 2 са просто XOR, всяка стъпка е просто сравнение на битове. Въведете дума с данни и генератор (делител), за да видите всяко подравняване, всяко XOR и крайния остатък, използван като CRC.

Как да използвате калкулатора CRC / XOR / Modulo-2

За да изчислите CRC чрез деление по модул 2, следвайте тези 4 стъпки:

  • Въведете двоичното съобщение (битове с данни) в първото поле.
  • Въведете генераторния многочлен като двоични битове във второто поле.
  • Калкулаторът добавя (n − 1) нулеви бита, където n е дължината на генератора.
  • Натиснете „Изчисли“, за да XOR-нете надолу съобщението и прочетете остатъка като CRC.

Частното обикновено се пренебрегва при CRC — остатъкът е контролната сума, която се добавя към съобщението преди предаване.

CRC и аритметика по модул 2

Цикличният излишен код открива грешки при предаване, като третира съобщението като голям двоичен многочлен и го дели на договорен генераторен многочлен. Делението се извършва в аритметика по модул 2 (GF(2)), където събирането и изваждането са идентични и равни на XOR — няма преноси и заеми. Остатъкът от това деление е CRC. Когато получателят раздели съобщението плюс CRC на същия генератор, остатък 0 означава, че не е открита грешка. Този калкулатор възпроизвежда точно този побитов процес.

Делението разпределя цялото на равни групи. Делението на стълб прави това цифра по цифра.

Делител (32) — числото, на което делите. Поставете го вляво от ъгъла.

Как работи CRC делението по модул 2

Калкулаторът изчислява CRC чрез пет вътрешни действия:

  • Добавя (n − 1) нулеви бита към съобщението, където n е броят битове на генератора.
  • Подравнява генератора под най-лявата 1 на текущия остатък.
  • XOR-ва генератора в тези битове (изваждане по модул 2 без заем).
  • Премества към следващата водеща 1 и повтаря XOR подравняването.
  • Спира, когато останалите битове са по-малко от генератора; те са CRC.

Всяка цифра на частното е 1, където генераторът е XOR-нат, и 0 другаде, но за CRC има значение само крайният остатък.

Добавя (n − 1) нулеви бита към съобщението, където n е броят битове на генератора.

Формула за CRC деление

Калкулаторът CRC / XOR / Modulo-2 изчислява CRC = (M(x) · xⁿ⁻¹) mod G(x) в GF(2), където M(x) е съобщението, G(x) е генератор от n бита, а всички събирания са XOR. Предаваната рамка е M(x)·xⁿ⁻¹ + CRC, която G(x) дели точно. При получаване нулев остатък потвърждава целостта.

110100111 = 1011 × 108902 + 189 → Тъждеството е в сила

Примерни задачи CRC / XOR

Тези примери показват деление по модул 2 с XOR на всяка стъпка.

Пример 1 — Съобщение 1101, генератор 101

  1. Дължина на генератора 3, затова добавете 2 нули: 1101 става 110100.
  2. XOR-нете 101 във водещите битове многократно: 110100 → 011100 → 001000 → 000010.
  3. Последните 2 бита, 10, са CRC остатъкът.

Пример 2 — Защо изваждането е XOR

  1. По модул 2: 1 + 1 = 0 и 1 − 1 = 0, така че събирането и изваждането са една операция.
  2. Тази операция е точно побитово XOR, без пренос и заем.
  3. Всяка стъпка на делението е едно XOR на генератора в текущите битове.

Пример 3 — Проверка от получателя

  1. Добавете CRC към съобщението и разделете на същия генератор.
  2. XOR-нете надолу точно както преди.
  3. Остатък 0 означава, че не е открита грешка.
Дължина на генератора 3, затова добавете 2 нули: 1101 става 110100.
XOR-нете 101 във водещите битове многократно: 110100 → 011100 → 001000 → 000010.
Последните 2 бита, 10, са CRC остатъкът.

Решени CRC задачи

Как се изчислява CRC на 10110 с генератор 1011?

Добавете 3 нули (дължина на генератора 4), за да получите 10110000, после XOR надолу. Подравнете 1011 под всяка водеща 1 и XOR: 10110000 → 00100000 → след последователни XOR крайните 3 бита формират CRC остатъка. Остатъкът се добавя към 10110, така че цялата рамка се дели на 1011 без остатък.

1101001111011

Защо нулев остатък означава, че данните са непокътнати?

Изпращачът избира CRC така, че предадената рамка да е точен кратен на генератора. Всяко кратно на G(x), делено на G(x), дава остатък 0. Ако битове се объркат по пътя, рамката обикновено вече не е кратна и делението при получателя дава ненулев остатък, сигнализирайки грешка.

1010111

Чести грешки при CRC / modulo-2

CRC делението по модул 2 води до 5 чести грешки:

  • Използване на обикновено двоично изваждане с заеми вместо XOR.
  • Добавяне на грешен брой нулеви битове (трябва да е дължина на генератора минус едно).
  • Подравняване на генератора под 0 бит вместо под водещата 1.
  • Третиране на преноси, сякаш съществуват в GF(2) аритметика.
  • Докладване на частното като CRC вместо остатъка.

Калкулаторът CRC / XOR / Modulo-2 XOR-ва на всяка стъпка, добавя правилните нули и връща остатъка като контролна сума.

Използване на обикновено двоично изваждане с заеми вместо XOR.
Добавяне на грешен брой нулеви битове (трябва да е дължина на генератора минус едно).
Подравняване на генератора под 0 бит вместо под водещата 1.
Третиране на преноси, сякаш съществуват в GF(2) аритметика.
Докладване на частното като CRC вместо остатъка.

Често задавани въпроси

Какво е деление по модул 2?

Какво е деление по модул 2?

Това е двоично деление в GF(2), където събирането и изваждането са XOR и няма преноси или заеми. На всяка стъпка генераторът се XOR-ва в текущите битове, където водещият бит е 1.

Как се изчислява CRC?

Добавете (дължина на генератора − 1) нулеви бита към съобщението, после разделете на генератора с деление по модул 2 (XOR). Остатъкът е CRC контролната сума.

Защо се използва XOR вместо нормално изваждане?

В аритметика по модул 2: 1 + 1 = 0 без пренос, така че събирането и изваждането са идентични и равни на XOR. Всяка стъпка на делението е едно побитово XOR.

Колко нулеви бита да добавя към съобщението?

Добавете с едно по-малко от броя битове на генератора. 4-битов генератор означава 3 добавени нули, които запазват място за CRC остатъка.

Как получателят проверява CRC?

Получателят дели съобщението плюс CRC на същия генератор с деление по модул 2. Остатък 0 означава, че не е открита грешка; ненулев остатък сигнализира повреда.

Важно ли е частното при CRC?

Не. За CRC се използва само остатъкът като контролна сума. Частното обикновено се пренебрегва.

Какво е генераторният многочлен?

Това е договореният двоичен делител, записан като многочлен, напр. x³ + x + 1 (1011). Изпращачът и получателят трябва да използват един и същ генератор, за да работи проверката.

CRC тъждеството

Калкулаторът CRC / XOR / Modulo-2 използва CRC = (M(x)·xⁿ⁻¹) mod G(x) в GF(2), така че предадената рамка M(x)·xⁿ⁻¹ + CRC се дели точно на G(x). Понеже кратно на генератора дава остатък 0, делението по модул 2 при получателя връща 0, когато данните са непокътнати.