Калкулатор CRC / XOR / деление по модул 2 с колона
Калкулатор CRC / XOR / деление по модул 2 с колона
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) дели точно. При получаване нулев остатък потвърждава целостта.
Примерни задачи CRC / XOR
Тези примери показват деление по модул 2 с XOR на всяка стъпка.
Пример 1 — Съобщение 1101, генератор 101
- Дължина на генератора 3, затова добавете 2 нули: 1101 става 110100.
- XOR-нете 101 във водещите битове многократно: 110100 → 011100 → 001000 → 000010.
- Последните 2 бита, 10, са CRC остатъкът.
Пример 2 — Защо изваждането е XOR
- По модул 2: 1 + 1 = 0 и 1 − 1 = 0, така че събирането и изваждането са една операция.
- Тази операция е точно побитово XOR, без пренос и заем.
- Всяка стъпка на делението е едно XOR на генератора в текущите битове.
Пример 3 — Проверка от получателя
- Добавете CRC към съобщението и разделете на същия генератор.
- XOR-нете надолу точно както преди.
- Остатък 0 означава, че не е открита грешка.
Дължина на генератора 3, затова добавете 2 нули: 1101 става 110100. XOR-нете 101 във водещите битове многократно: 110100 → 011100 → 001000 → 000010. Последните 2 бита, 10, са CRC остатъкът.
По модул 2: 1 + 1 = 0 и 1 − 1 = 0, така че събирането и изваждането са една операция. Тази операция е точно побитово XOR, без пренос и заем. Всяка стъпка на делението е едно XOR на генератора в текущите битове.
Добавете CRC към съобщението и разделете на същия генератор. XOR-нете надолу точно както преди. Остатък 0 означава, че не е открита грешка.
Решени CRC задачи
Как се изчислява CRC на 10110 с генератор 1011?
Добавете 3 нули (дължина на генератора 4), за да получите 10110000, после XOR надолу. Подравнете 1011 под всяка водеща 1 и XOR: 10110000 → 00100000 → след последователни XOR крайните 3 бита формират CRC остатъка. Остатъкът се добавя към 10110, така че цялата рамка се дели на 1011 без остатък.
Защо нулев остатък означава, че данните са непокътнати?
Изпращачът избира CRC така, че предадената рамка да е точен кратен на генератора. Всяко кратно на G(x), делено на G(x), дава остатък 0. Ако битове се объркат по пътя, рамката обикновено вече не е кратна и делението при получателя дава ненулев остатък, сигнализирайки грешка.
Чести грешки при CRC / modulo-2
CRC делението по модул 2 води до 5 чести грешки:
- Използване на обикновено двоично изваждане с заеми вместо XOR.
- Добавяне на грешен брой нулеви битове (трябва да е дължина на генератора минус едно).
- Подравняване на генератора под 0 бит вместо под водещата 1.
- Третиране на преноси, сякаш съществуват в GF(2) аритметика.
- Докладване на частното като CRC вместо остатъка.
Калкулаторът CRC / XOR / Modulo-2 XOR-ва на всяка стъпка, добавя правилните нули и връща остатъка като контролна сума.
Често задавани въпроси
Какво е деление по модул 2?
Какво е деление по модул 2?
Как се изчислява CRC?
Защо се използва XOR вместо нормално изваждане?
Колко нулеви бита да добавя към съобщението?
Как получателят проверява CRC?
Важно ли е частното при CRC?
Какво е генераторният многочлен?
CRC тъждеството
Калкулаторът CRC / XOR / Modulo-2 използва CRC = (M(x)·xⁿ⁻¹) mod G(x) в GF(2), така че предадената рамка M(x)·xⁿ⁻¹ + CRC се дели точно на G(x). Понеже кратно на генератора дава остатък 0, делението по модул 2 при получателя връща 0, когато данните са непокътнати.