( apal | 2020. 11. 08., v – 10:32 )

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