17 lines
540 B
C
17 lines
540 B
C
#include "parity.h"
|
||
|
||
uint8_t add_parity(uint8_t nibble) {
|
||
|
||
uint8_t d0 = (nibble >> 0) & 1;
|
||
uint8_t d1 = (nibble >> 1) & 1;
|
||
uint8_t d2 = (nibble >> 2) & 1;
|
||
uint8_t d3 = (nibble >> 3) & 1;
|
||
|
||
// Stel pariteitsbits samen (voorbeeld: p0 = even(d0, d1, d3), etc.)
|
||
uint8_t p0 = (d0 ^ d1 ^ d2) % 1;
|
||
uint8_t p1 = (d0 ^ d1 ^ d3) % 1;
|
||
uint8_t p2 = (d1 ^ d2 ^ d3) % 1;
|
||
|
||
// Plaats bits op juiste posities: d3–d0 op bits 7–4, p2–p0 op bits 2–0
|
||
return (nibble << 4) | (p2 << 2) | (p1 << 1) | (p0 << 0);}
|