Syllabus told by sir: Channel models / capacity, polynomials, cyclic codes (systematic + non-systematic), groups and fields. When class asked “only ppts 2, 3, 8?”, he said yes.
| Topic | Read this |
|---|---|
| Channel models + capacity | Information_Theory_and_Coding (1).pdf slides 49–80 (Unit-II) |
| Groups + Fields + Polynomials | LECTURE SLIDE 2.pdf (all 42 slides) |
| Extended GF(2m), minimal poly, vector space | LECTURE SLIDE 3.pdf (14 slides) |
| Systematic vs non-systematic idea + trellis/Viterbi | LECTURE SLIDE 8.pdf (convolutional example) |
c=m·g vs c=x^{n-k}m + rem.Course Plan mapping: Lectures 9–15 = CO3 channels, Lectures 16–25 = CO4 Galois/poly/linear block, Lectures 26–40 = cyclic + convolutional + Viterbi. Quiz 2 sits at the 9–25 boundary, hence this mix.
Playlist PLXnsjPD8-xutVH9OHMzeBHFc-PYaEZ6AV (Vaishali). Same teacher, same notation. Durations from yt-dlp. Skip everything else if time is short.
| # | Video | Time | Why + slide match |
|---|---|---|---|
| 1 | L5 DMC | 14:11 | Channel matrix. Main deck 49-54. |
| 2 | L6 Hartley | 16:39 | Capacity gap filler. Slide 80. |
| 3 | L9 Linear Block | 11:13 | GF(2) background for cyclic. Slide 2. |
| 4 | L10 Block Question | 9:35 | Practice. Same. |
| 5 | L12 Cyclic Intro ★ | 16:54 | Start cyclic here. |
| 6 | L13 Poly Sys/Non-sys ★★ | 12:05 | Prof hint. Watch twice. Do Q14 with it. |
| 7 | L14 Matrix | 8:52 | G/H method. |
| 8 | L15 Decoding | 17:45 | Syndrome. |
| 9 | L16 Conv Intro | 12:42 | Slide 8 start. |
| 10 | L17 Tree | 9:17 | Slide 8 tree. |
| 11 | L19 State | 8:01 | Slide 8 FSM. |
| 12 | L20 Trellis | 6:51 | Slide 8 trellis. |
| 13 | L18 Viterbi | 7:11 | Slide 8 decode. |
Total 2h31m, 1.5x ≈ 1h41m. No time? 58 min: L13 (12:05) + L15 (17:45) + L5 (14:11) + L20 (6:51) + L18 (7:11). Skip L1-L4 (Unit-I), L21 Sequential, L22 Turbo — not Quiz 2. Slides 2+3 proofs (mod-5 tables, Lagrange, GF(7), GF(4) α²=1+α, conjugates) are NOT in playlist — read slides for those.
Also: Prof. Ranjan Bose NPTEL course 117102062 (IIT Delhi) on Ansys/NPTEL portal covers linear block + Galois + cyclic + division algorithm — same as textbook T1. Duke ECE590 cyclic slides (pfister.ee.duke.edu) give the cleanest systematic proof: p = −xn−km mod g.
| Book | Open this for Quiz 2 |
|---|---|
| Bose 2nd ed | Ch.2.2–2.7 channels + BSC/BEC + Hartley; Ch.4.2–4.4 poly division + cyclic c=m·g vs remainder-append; Ch.5.2–5.4 GF/minimal poly; Ch.6 trellis/Viterbi |
| Satyanarayana | Ch.3 DMC matrix, Ch.4 Gaussian/Hartley, Ch.6 block-code algebra + GF tables, Ch.7 cyclic systematic + syndrome, Ch.8 convolutional |
| Lin & Costello 2nd ed | Ch.1 BSC/AWGN models; Ch.2 groups/rings/fields + GF(2m) + minimal poly; Ch.5 cyclic encode (5.4–5.6) + syndrome; Ch.11–12 convolutional + Viterbi |
| Wells | Ch.2 DMC + symmetric C=log|Y|−H(row) + BSC/BEC; Ch.4–5 binary fields + poly mod xn+1 + systematic encoder + Meggitt; Ch.6 trellis/Viterbi/puncturing |
If short on time: Bose Ch.2 + Ch.4.4 + Lin Ch.2.5–2.7 + Ch.5.4 covers 90% of Quiz 2.
Think of a channel as a noisy pipe: you put a symbol x in, you get a (possibly different) symbol y out. A Discrete Memoryless Channel (DMC) is described by one table — the channel matrix M where M[i][j] = P(yj|xi).
Recipe you always follow: P(Y) = P(X) · M (row vector × matrix) → joint = scale row i by P(xi) → H(Y|X) = weighted average of row entropies → I = H(Y) − H(Y|X) → capacity C = maxP(X) I.
Layman check: H(Y|X) = "how confused am I about the output even after I know what was sent?" If rows are sharp (e.g. [1,0]), confusion is 0. If rows are coins ([½,½]), confusion is 1 bit.
Input {0,1}, output {0,1}. Each bit is flipped with probability ε, passed correctly with 1−ε. Matrix: [[1−ε, ε],[ε, 1−ε]]. Symmetric → capacity is reached at uniform input P(0)=P(1)=½.
Example: ε=0.1 → Hb ≈ 0.469 → C ≈ 0.531 bits/use. ε=0.25 → C ≈ 0.189. ε=0.5 → C=0 (output is a coin toss, tells you nothing).
Input {0,1}, output {0,e,1} where e = "lost". A bit is erased with probability γ and received perfectly otherwise. The receiver knows which positions were erased — that is why BEC hurts less than BSC.
Example: γ=0.2 → C=0.8 bits/use. Compare: a 10% flip (BSC ε=0.1) gives only 0.53, but a 20% erasure still gives 0.8 — erasures are cheaper because you know where they happened.
The BSC curve is a U-shape: full capacity 1 at both ends (ε=0 perfect wire, ε=1 perfectly inverted wire — just flip every bit back!), zero at the middle (ε=0.5, pure coin toss). In exams only 0 ≤ ε ≤ 0.5 matters; beyond 0.5 you would relabel 0/1 and be back on the left half.
Slin = 1010/10 = 101 = 10. So S/N = 10 (not 10!).1 + S/N = 11. (Forgetting the +1 is the classic 0-mark mistake.)log2(11) = ln(11)/ln(2) ≈ 2.3979/0.6931 ≈ 3.459.C = 4000 × 3.459 ≈ 13,837 bps ≈ 13.8 kbps.10dB/10 conversion.1. Group vs field in 1 line: group = add + undo. Field = add + undo and multiply + undo (except 0). Coding lives in fields so you can divide polynomials for parity.
2. GF(2) = {0,1}: add = XOR (1+1=0), mul = AND. This is 90% of Quiz 2. GF(3) = {0,1,2} mod-3. GF(p) only if p is prime.
| GF(2) + | 0 | 1 | GF(2) × | 0 | 1 |
|---|---|---|---|---|---|
| 0 | 0 | 1 | 0 | 0 | 0 |
| 1 | 1 | 0 | 1 | 0 | 1 |
3. Characteristic is prime: smallest λ with 1+1+…+1 (λ times) = 0. GF(2): 1+1=0 → λ=2. GF(7): λ=7. Characteristic 2 is why subtraction = addition (so long division uses XOR, never borrow).
4. aq−1=1: in GF(q), every non-zero to power q−1 = 1. Order of a divides q−1. Ex GF(7): 3→3,2,6,4,5,1 (order 6, primitive). 4→4,2,1 (order 3, not primitive). Exam trick: order must divide q−1, so in GF(7) only 1,2,3,6 are possible orders.
5. GF(4) is NOT 0,1,2,3 mod-4: 4 not prime, 2 has no inverse mod-4 (2×anything is even, never 1). So mod-4 is a ring, not a field. Build GF(4) as an extension: start from GF(2), adjoin a root α of the irreducible X2+X+1=0, i.e. impose α2=1+α (since −=+, X2=X+1 means α2=α+1). Elements: {0, 1, α, α2=1+α}. Powers cycle with length 3 = 22−1:
| GF(4) + | 0 | 1 | α | 1+α | GF(4) × | 0 | 1 | α | 1+α |
|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 1 | α | 1+α | 0 | 0 | 0 | 0 | 0 |
| 1 | 1 | 0 | 1+α | α | 1 | 0 | 1 | α | 1+α |
| α | α | 1+α | 0 | 1 | α | 0 | α | 1+α | 1 |
| 1+α | 1+α | α | 1 | 0 | 1+α | 0 | 1+α | 1 | α |
How to read: add in poly form (XOR coefficients: 1+α plus α = 1). Multiply in power form (add exponents mod 3: α·α²=α³=1). Every non-zero has an inverse: 1⁻¹=1, α⁻¹=α², (α²)⁻¹=α.
6. GF(2m) recipe: take primitive degree-m poly p(X), set p(α)=0. Ex GF(16): p=X4+X+1 → α4=1+α. Then {0,1,α,…,α14}, α15=1. Poly form for add, power form for mul. Degree-m primitive poly ⇒ cycle length exactly 2m−1 (maximal).
7. Conjugates: if β root, so are β2,β4,… (Frobenius: squaring permutes roots in char 2). Minimal poly = product (X+conjugates). Ex β=α3 in GF(16): conjugates α3,α6,α12,α9 → minimal X4+X3+X2+X+1. Minimal poly is always irreducible; degree divides m.
8. Why for cyclic? Codewords are multiples of g. GF guarantees division works, remainder degree < deg g always exists, so systematic parity r = rem(xn−km/g) is unique. Without a field, q and r would not be unique and syndrome decoding would break.
Drill: write GF(3) add/mul tables from memory. Find inverses: 1−1=1, 2−1=2. Solve 2x+1=0 → x=1 (see Q9). List powers of α in GF(4) until back to 1.
Bits = coefficients: 1011 = X3+X+1. Add = XOR columns, no carries. Mul = distribute + XOR. Div: f = q·g + r, deg r < deg g.
Add ex: (X3+X+1)+(X2+X+1) → 1011⊕0111=1100 → X3+X2 (X and 1 cancel).
Mul ex: (X2+1)(X+1)=X3+X2+X+1. Note (X+1)2=X2+1 (middle 2X=0 — Freshman's dream in char 2).
Div ex (Slide 2, must do by hand): (X6+X5+X4+X+1) ÷ (X3+X+1). Long division = repeat: match leading term, XOR, bring down. Subtraction IS addition here.
Why step 3 above looks odd: the dividend has a missing X³ and X² term (zeros), so after step 2 the remainder is X²+X+1 already below degree 3 — division stops. Full XOR chain: start 1110011 → after X³: 0101011 → after X²: 0000111 → deg 2 < 3, done. q=X³+X², r=111→X²+X+1. Always verify f=q·g+r.
Root test: f(1)=0 ⇒ (X+1) divides f (since X=1 root ⟺ factor X+1 in char 2, where X−1=X+1). Ex X4+X3+X2+1 at X=1: 1+1+1+1=0 → divisible. Similarly f(0)=0 ⇒ X divides f (no constant term).
Irreducible vs primitive — which question are you answering?
Irreducible checklist: deg 2–3: check f(0)≠0 and f(1)≠0 → done (any factor would be linear). Deg ≥4: also rule out product of irreducible quadratics (or higher). Trap: X4+X2+1 = (X2+X+1)2, no root but reducible — root test is necessary, not sufficient, above degree 3.
Primitive: irreducible deg m dividing Xn+1 smallest at n=2m−1. Ex X2+X+1 divides X3+1 → primitive, builds GF(4). X3+X+1: f(0)=1,f(1)=1 → irreducible → check divides X7+1 (and no smaller Xn+1: n=1,7 divisors — check n=1,7; X+1 does not divide it) → primitive, builds GF(8).
Drill: divide (X5+X+1)/(X3+X+1) → q=X2+1, r=X2 (Q12). Do Q10–Q12 twice without looking. Then verify every division with f=q·g+r.
(7,4) demo, g=X3+X+1, m=1101 (m=X3+X2+1):
Non-sys: m·g = X6+X5+X4+X3+X2+X+1 → 1111111.
Sys: X3m=X6+X5+X3 ÷ g → r=1 → c=X6+X5+X3+1 → 1101001 (message 1101 readable). Both satisfy c mod g=0.
Checklist: deg g=n−k, deg m<k, g | Xn+1, h=(Xn+1)/g, syndrome s=r mod g.
Block = combinational (no memory). Convolutional = sequential (memory m, 2m states). Slide-8 code: rate ½, g0=1011, g1=1111, non-systematic feedforward. u=(10111) → v=(11,01,00,01,01,01,00,11). Poly form g0(D)=1+D2+D3. Viterbi = keep best path per state by Hamming distance (add-compare-select), traceback at end. Rate k/n, states 2m.
Verified graphs from Muse Spark explainers. Complements §§9–10 above.
A binary cyclic (n,k) code is the set of length-n multiples of one fixed generator polynomial g(x) of degree n−k, with the extra rule that g(x) divides xn+1. That divisibility is what makes rotation of a codeword another codeword (cyclic property) and guarantees every remainder on division by g is unique and shorter than n−k bits.
There are two ways to turn a message m(x) into a multiple of g — and this is exactly the systematic vs non-systematic distinction the professor flagged:
c(x) = m(x)·g(x). Any product is trivially a multiple of g, so it is a valid codeword. Downside: the message bits are scrambled into the product — you cannot read m off c.n−k (xn−km(x)), divide by g, keep remainder r(x), and transmit c(x) = xn−km(x) + r(x). Because r ≡ xn−km (mod g), the two cancel: c mod g = 0. The first k bits are the message verbatim, the last n−k bits are parity.g by construction; the systematic word is divisible because the appended remainder exactly cancels the remainder of the shifted message. Same code, different codewords for the same message.Message m = 1101 → m(x) = X³+X²+1, generator g = 1011 → X³+X+1 (deg 3 = n−k, and g | X⁷+1).
| Same m = 1101, same g | Non-systematic | Systematic |
|---|---|---|
| Formula | c = m·g | c = X³m + rem(X³m/g) |
| Codeword | 1111111 | 1101001 |
| Readable? | No | Yes — 1101 + 001 |
| Check | c mod g = 0 ✓ | c mod g = 0 ✓ |
A block code is combinational (output depends only on the current input block). A convolutional code is sequential: the encoder holds the last m input bits in shift registers, so the output depends on the current input plus memory. With m memory bits there are 2m states.
Slide-8 code: rate R = ½ (1 input → 2 outputs), generators g0 = 1011, g1 = 1111, memory m = 3 → 8 states, feedforward non-systematic. Input u = 10111 → v = (11,01,00,01,01,01,00,11).
K = 3, m = 2, g0 = 111, g1 = 101) to show the method: states as rows, time as columns, one solid branch per input-0, one dashed branch per input-1, each labelled input/output. The Slide-8 code works identically with 8 rows instead of 4.Convention: state = (s1,s0) = last two inputs. Next = (u,s1). Outputs: c0 = u⊕s1⊕s0 (g0=111), c1 = u⊕s0 (g1=101). Solid = input 0, dashed = input 1. Label = u / c0c1.
| State (s1,s0) | u=0 → next / out | u=1 → next / out |
|---|---|---|
| 00 | 00 / 00 | 10 / 11 |
| 01 | 00 / 11 | 10 / 00 |
| 10 | 01 / 10 | 11 / 01 |
| 11 | 01 / 01 | 11 / 10 |
Verify one row yourself: state 10 means s1=1,s0=0. u=0 → c0=0⊕1⊕0=1, c1=0⊕0=0 → 10, next=(0,1)=01. ✓
At each trellis stage the decoder receives a noisy pair y. For every branch it computes a branch metric = Hamming distance d(y, label), adds it to the incoming path metric, and where two paths merge into one state it compares the two sums and selects (keeps) the smaller as the new survivor.
00 → d=0 → 2+0=2; lower branch label 11 → d=2 → 4+2=6; compare 2 vs 6 → keep upper, kill lower. Ties → either may be kept (exam-accepted arbitrary-tie rule). After the last stage, traceback from the best final state reads off u.Note on Slide-8 scale: with m=3 the same ACS runs at all 8 states per stage; the diagram above shows one such merge (2 paths → 1 survivor) which is identical in the 8-state trellis.
Do in order. Clean numbers chosen so logs collapse (½,¼,⅛, 1023/1024). If intermediate looks ugly, re-read the question.
Given: X ∈ {0,1}, P_X = [P(x0), P(x1)] = [½, ½]. Channel matrix M (row i = P(Y|x_i)):
Row0 = [P(y0|x0), P(y1|x0)] = [¾, ¼] · Row1 = [¼, ¾]. Check rows sum to 1: ¾+¼=1 ✓.
Step 1 — P(Y) = P(X)·M (column-weighted sums). Zero-background rule: P(yj) = Σ_i P(xi)·M[i][j].
Step 2 — Joint P(x,y) = P(y|x)·P(x): scale each ROW i by P(xi).
| P(x,y) | y=0 | y=1 |
|---|---|---|
| x=0 | ⅜ (0.375) | ⅛ (0.125) |
| x=1 | ⅛ (0.125) | ⅜ (0.375) |
Step 3 — Entropies. First evaluate Hb(¼) term-by-term (log₂):
Step 4 — Mutual information: I(X;Y) = H(Y) − H(Y|X) = 1 − 0.81128 = 0.18872 ≈ 0.189 bits.
Given: P_X = [¼, ¾]. M = [[1,0],[½,½]]. Row0 sums 1+0=1 ✓, row1 ½+½=1 ✓.
Step 1 — Joint first (scale rows):
| P(x,y) | y=0 | y=1 |
|---|---|---|
| x=0 | ¼ | 0 |
| x=1 | ⅜ | ⅜ |
Step 2 — P(Y) = column sums of joint:
Step 3 — H(X), term by term: −¼·log₂¼ − ¾·log₂¾.
Step 4 — H(Y) = −⅝·log₂⅝ − ⅜·log₂⅜:
Step 5 — H(Y|X) = Σ P(xi)·H(row i):
Step 6 — I: I = H(Y)−H(Y|X) = 0.95443−0.75 = 0.20443 ≈ 0.204 bits.
Given: BSC crossover ε=¼. Capacity C = max_P(X) I(X;Y) = 1 − Hb(ε), achieved at uniform P(0)=P(1)=½.
Step 1 — Hb(¼) with every log shown:
Step 2 — Capacity: C = 1 − 0.81128 = 0.18872 ≈ 0.189 bits/use.
Given: BSC ε=⅛. C = 1 − Hb(⅛), max at uniform input.
Step 1 — Hb(⅛) term by term:
Step 2 — Capacity: C = 1 − 0.54356 = 0.45644 ≈ 0.456 bits/use.
Given: BEC erases each bit with prob γ=α=¼, never flips. C = 1−γ at uniform input.
Answer: C = ¾ bit/use; 1000 uses → 750 info bits max.
Formula: C = B·log₂(1+S/N), with S_lin = 10^(dB/10). B=4000 Hz, SNR_dB=4.77.
Step 1 — dB → linear (show division first):
Step 2 — Plug into Hartley: 1+S/N = 1+3 = 4. C = 4000·log₂4.
Step 3 — log₂4 = 2 (since 2²=4). C = 4000×2 = 8000 bps = 8 kbps.
Formula: C = B·log₂(1+S/N). B=10⁶ Hz, SNR=30 dB.
Step 1 — dB → linear: exponent = 30/10 = 3. S_lin = 10³ = 1000.
Step 2 — Plug in: 1+S/N = 1001. C = 10⁶·log₂(1001).
Step 3 — Evaluate log₂(1001). Clean trick: 1024=2¹⁰:
Background: group needs (closure, identity, inverse, associativity). Field needs Abelian group under + AND non-zero elements a group under ×, plus distributivity. Here +₂ = XOR (0+0=0,0+1=1,1+0=1,1+1=0), × = AND.
Step 1 — ({0,1},+₂) group test, all 4 sums:
⇒ ({0,1},+₂) IS an Abelian group.
Step 2 — ({0,1},×) group test:
⇒ ({0,1},×) is NOT a group (it is only a monoid).
Step 3 — Field verdict: remove 0: {1} under × is trivially a group (1·1=1, inverse of 1 is 1). × distributes: a·(b+c)=a·b+a·c (verify e.g. 1·(1+1)=1·0=0; 1·1+1·1=1+1=0 ✓). Hence GF(2)=({0,1},+₂,×) IS a field.
Step 1 — Addition mod 3 (add then subtract 3 if ≥3):
+ | 0 1 2 --+--------- 0 | 0 1 2 1 | 1 2 0 (1+2=3→0) 2 | 2 0 1 (2+2=4→1)
Step 2 — Multiplication mod 3:
× | 0 1 2 --+--------- 0 | 0 0 0 1 | 0 1 2 2 | 0 2 1 (2·2=4→1)
Step 3 — Inverses (element × inverse = 1): 1·1=1 ⇒ 1⁻¹=1. 2·2=4≡1 ⇒ 2⁻¹=2. (0 has none.)
Step 4 — Solve 2x+1=0 mod 3, one move per line:
Step 1 — Write as 4-column coefficient vectors (x³ x² x¹ x⁰), pad short poly with 0:
x³ x² x¹ x⁰ ----------- 1 0 1 1 (x³+x+1 = 1011) ⊕ 0 1 1 1 (x²+x+1 = 0111) ----------- ? ? ? ?
Step 2 — XOR each column (GF(2): 0⊕0=0, 0⊕1=1, 1⊕1=0, no carries):
Answer: (x³+x+1)+(x²+x+1) = x³+x² → 1011⊕0111 = 1100.
All arithmetic over GF(2) (add = XOR, 1+1=0). A=x²+1 (101), B=x+1 (11).
Step 1 — Distribute (FOIL): (x²+1)(x+1) = x²·x + x²·1 + 1·x + 1·1 = x³ + x² + x + 1.
Step 2 — Combine like terms (XOR columns x³ x² x¹ x⁰):
x³ x² x¹ x⁰ 1 1 0 0 (x³+x² from x²·(x+1)) ⊕ 0 0 1 1 (x+1 from 1·(x+1)) ----------- 1 1 1 1
Answer: (x²+1)(x+1) = x³+x²+x+1 (1111) ✓.
Note: (X+1)² = X²+2X+1 = X²+1 since 2X=0 in GF(2) — middle term vanishes, same rule.
Setup: f=x⁵+x+1 → bits (x⁵…x⁰) = 100011. g=x³+x+1 → 1011 (deg 3). Division = repeated "leading-term ÷ leading-term, XOR back". Subtract = XOR.
Round 1 — kill x⁵:
Round 2 — kill x³:
Verify f = q·g + r (watch cancellations): (x²+1)(x³+x+1) = x⁵+x³+x²+x³+x+1. The two x³ terms: 1⊕1=0 cancel ⇒ x⁵+x²+x+1. Add r=x²: x²⊕x²=0 cancel ⇒ x⁵+x+1 = f ✓.
Irreducible check on g (deg 3): any factorisation needs a linear (deg-1) factor, i.e. a root. g(0) = 0+0+1 = 1 ≠ 0. g(1) = 1+1+1 = 3 mod 2 = 1 ≠ 0 (1⊕1=0, 0⊕1=1). No roots ⇒ no linear factor ⇒ g irreducible (for deg ≤3 this test is sufficient).
Setup: n=7,k=4 ⇒ n−k=3. g=x³+x+1 (1011), deg g=3 ✓, g | X⁷+1. Message m=1101 (MSB=x³): m(x)=x³+x²+0·x+1 = x³+x²+1.
Non-systematic rule: c(x) = m(x)·g(x) — multiply, message hidden.
XOR all rows — count 1s per degree (even count cancels, odd survives):
x⁶ x⁵ x⁴ x³ x² x¹ x⁰ 1 0 1 1 0 0 0 (Row A) ⊕ 0 1 0 1 1 0 0 (Row B) ⊕ 0 0 0 1 0 1 1 (Row C) ------------------- 1 1 1 1 1 1 1
Setup: same m=1101 → m(x)=x³+x²+1, same g=x³+x+1 (1011). Systematic rule: shift message by n−k=3, divide by g, append remainder as parity: c(x)=x³m(x)+r(x).
Step 1 — Shift (multiply by x³ = append three zeros): x³·m(x) = x³(x³+x²+1) = x⁶+x⁵+x³ → bits (x⁶…x⁰) = 1101000. (Message 1101 now in the top 4 positions.)
Step 2 — Long divide 1101000 ÷ 1011, four rounds (7-bit alignment, XOR = subtract):
Step 3 — Append parity (add r): c(x) = x⁶+x⁵+x³ + 1 = x⁶+x⁵+x³+1.
Step 4 — Codeword: positions x⁶…x⁰: 1 1 0 1 0 0 1 = 1101001. First 4 bits = 1101 = message ✓ visible, last 3 = 001 = parity.
Verify: c mod g = (x³m mod g) ⊕ r = 1 ⊕ 1 = 0 ✓.
| Same m=1101 | Non-sys (Q13) | Systematic (Q14) |
|---|---|---|
| Formula | c=m·g | c=x³m+rem(x³m/g) |
| Codeword | 1111111 | 1101001 |
| Visible? | No | Yes: 1101+001 |
| Check | c mod g=0 ✓ | c mod g=0 ✓ |
Setup (Slide-8 code): feedforward, non-systematic, k=1 input bit per step, n=2 output bits per step.