X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=hamming.txt;h=511ab5a1614c2f21d1bd4351adf12888f5f8b845;hb=HEAD;hp=aa9e9471206fd584c816f340d451289ce75e1d13;hpb=0ca306f13d6b1548edf6106c504b1cd90c7c61ce;p=hamming diff --git a/hamming.txt b/hamming.txt index aa9e947..511ab5a 100644 --- a/hamming.txt +++ b/hamming.txt @@ -26,3 +26,71 @@ Strategy: lookup tables. Table of 2048 values -> 5 parity bits should be very cheap (consume 2kB of RAM for unsigned char, fits nicely into L1 cache and all). Do we want to encode extra information here? Probably not worth it at all... + +Expansion to (31,26): + + 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 +p1 p2 D1 p1 D2 D3 D4 p4 D5 D6 D7 D8 D9 DA DB p5 DC DD DE DF DG DH DI DJ DK DL DM DN DO DP DQ +-- xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx + -- xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx + -- xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx + -- xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx + -- xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx + +Reordering: + + D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF DG DH DI DJ DK DL DM DN DO DP DQ +p1 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx +p2 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx +p3 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx +p4 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx +p5 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx + +Last bit is the parity of all the data bits _and_ the parity bits, which means it gets +counted as follows (?): + +p6 xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx + +Converted to bitmasks: + +p1: 03 6a d5 55 +p2: 02 d9 b3 33 +p3: 01 c7 8f 0f +p4: 00 3f 80 ff +p5: 00 00 7f ff +p6: 03 b4 e9 96 + + +Finally, expansion to truncated (127,120) -> (71,64): + + ab-c---d-------e---------------f-------------------------------g------- +p1 - x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x +p2 -x xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx +p3 -xxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx +p4 -xxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx +p5 -xxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx +p6 -xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +p7 -xxxxxxx + +Reordering: + + ---------------------------------------------------------------- +p1 xx xx x x xx x x x x x x xx x x x x x x x x x x x x x x xx x x x +p2 x xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx xx +p3 xxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx +p4 xxxxxxx xxxxxxxx xxxxxxxx xxxxxxxx +p5 xxxxxxxxxxxxxxx xxxxxxxxxxxxxxxx +p6 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx +p7 xxxxxxx + +Bit masks, with extra computed parity bit: + +p1: 0xDAB5556AAAAAAAD5 +p2: 0xB66CCCD9999999B3 +p3: 0x71E3C3C78787878F +p4: 0x0FE03FC07F807F80 +p5: 0x001FFFC0007FFF80 +p6: 0x0000003FFFFFFF80 +p7: 0x000000000000007F +p8: 0xED3A65B4CB4B34E9 +