Anders als durchitterieren geht nicht. Du musst halt irgendwie die (binäre) Quersumme bilden. Und dafür gibt es keinen mir bekannten Intel-OpCode. Eine mögliche Delphi-Funktion kann auch nur eine For-Schleife verwenden.
Hier ist das ganze über eine Lookup-Tabelle gelöst:
Code:
UInt8 bitcount8(UInt8 c)
{
const UInt8 lookup[] = {0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4};
UInt8 result;
result = lookup[c&0xF];
result += lookup[(c>>4)&0xF];
return result;
}
Aber ob dies zwingend notwendig ist? Wie das Fischlein schon sagte, sind 256 Elemente nicht soooo viel.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.