Borzasztóan zavar a bit kezelés.
Ne zavarjon. Ha a C fordito okos es az architektura tamogatja az adott bitmuvelet hatekony elvegzeset, akkor ki fogja nekunk optimalizalni meg a bonyolultnak latszo kodot is. Tipikus pelda a bitforgatas (ROL, ROR): https://c.godbolt.org/z/easav8. Azaz:
#include <stdint.h>
uint64_t whatever(uint64_t x)
{
if ( x & (1UL<<63) )
return((x<<1)|1);
else
return(x<<1);
}
Es ebbol megcsinalja a hatekony x86-os kodot:
whatever: # @whatever
mov rax, rdi
rol rax
ret