[an error occurred while processing this directive]
Конечно, вот мой самый быстрый вариант... (+) коротко, практично и быстро... ;)
(«Телесистемы»: «Конференция «Микроконтроллеры и их применение»»)

миниатюрный аудио-видеорекордер mAVR

Отправлено SOIC 22 апреля 2003 г. 20:34
В ответ на: Кто знает как за минимальное время сформировать код Хемминга(8/4)? отправлено sda 22 апреля 2003 г. 20:24



const unsigned char Tet2Ham[] = {
0x00, 0x51, 0x72, 0x23, 0x34, 0x65, 0x46, 0x17,
0x68, 0x39, 0x1A, 0x4B, 0x5C, 0x0D, 0x2E, 0x7F
};

unsigned short Ham(unsigned char Value)
{
return Tet2Ham[Value&0x0F] | (Tet2Ham[Value>>4]<<8);
}

const unsigned char HamAdd[] = {
0x00, 0x05, 0x07, 0x02, 0x03, 0x06, 0x04, 0x01,
0x06, 0x03, 0x01, 0x04, 0x05, 0x00, 0x02, 0x07
};
const unsigned char HamXor[] = {
0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x08, 0x02
};

unsigned char UnHam(unsigned short h)
{
unsigned char data1 = h&0xFF, data2=h>>8;

data1 ^= HamXor[ (data1>>4) ^ HamAdd[data1&0x0F] ];
data2 ^= HamXor[ (data2>>4) ^ HamAdd[data2&0x0F] ];

return (data1&0x0F)|(data2<<4);
}


Составить ответ ||| Конференция ||| Архив

Ответы



Перейти к списку ответов ||| Конференция ||| Архив ||| Главная страница ||| Содержание

E-mail: info@telesys.ru