S C / C++ začínám a tak se chi zeptat zda lze nasledující věc řešet nějak elegantněji, přesněji řečeno efektivněji z pohledu strojového času.
Mám funkci, která je volnána v nějakém přesěndaném časovém intervalu a provádí nastvení čehosi podle bitové matice 32x16 bitů. Pro přehlednost v ukazce predpokldejme bitové pole jen 1x16 bitů. Při jaždém jednom spuštní funkce se musí zjisti stav odpovidajiciho bitu při prvním prvního, při durhém druhého při 16 šestnácténo a při 17 se jede od začátku.
//globlní proměnné
unsigned short tm;
tm = 0b0011110000111100;
unsigned char x=0;
// tělo samotné funkce
printf("%d \n", !!tm & 1 << x));
x++;
if(x==1 || x==4 || x==8 || x==12 || x==16)
{
...//nejaky kod, který se povádí každý čtvrtý průběh funkci
if(x==16}x=0; // Po 16 průbězích začínáme od nuly
}
Jinymi slovy ptám se zda lze unsigned short tm projit bit po bitu efektivněji než !!tm & 1 << x
Plus na to abych prošel 16x danou funkci a v ni část kodu provedl jen 4x potřebuji vyhodnoti 20x nějakou podminku. opět není stojově efektivněji řešení.
V každém případě děkuji.
TIP: Přetáhni ikonu na hlavní panel pro připnutí webu



Nahlásit jako SPAM
IP: 2a12:a800:2:1:45:141:215:97...–
Věrný člen
Grafoman
Zjistit počet nových příspěvků
































