Nachschlagetabellen wurden in Kommentaren erwähnt. Es gibt zwei Ansätze.
Schnell
Erstellen Sie eine 256 Byte lange Tabelle, wobei jeder nächste Wert die Quadratwurzel des entsprechenden Index ist. Dies ist schnell, da Sie das Argument als Index verwenden, um direkt auf den richtigen Wert zuzugreifen. Nachteil ist, dass es eine lange Tabelle mit vielen doppelten Werten benötigt.
Kompakt
Wie bereits erwähnt, kann eine 8-Bit-Ganzzahl nur Werte von 0 bis 255 haben, und die entsprechenden Quadratwurzeln sind 0 bis 16 (gerundet). Konstruieren Sie eine Tabelle mit 16 Einträgen (nullbasiert) mit dem n-ten Eintrag, dem Maximalwert für das Argument, für das die Quadratwurzel n ist. Tabelle würde so aussehen:
0
2
6
12
20
etc.
Sie gehen durch die Tabelle und hören auf, wenn Sie auf einen Wert stoßen, der größer oder gleich Ihrem Argument ist. Beispiel: Quadratwurzel von 18
set index to 0
value[0] = 0, is less than 18, go to the next entry
value[1] = 2, is less than 18, go to the next entry
value[2] = 6, is less than 18, go to the next entry
value[3] = 12, is less than 18, go to the next entry
value[4] = 20, is greater than or equal to 18, so sqrt(18) = 4
Während die schnelle Nachschlagetabelle eine feste Ausführungszeit hat (nur eine Nachschlagetabelle), ist hier die Ausführungszeit für Argumente mit höherem Wert länger.
Bei beiden Methoden können Sie zwischen einem gerundeten oder einem abgeschnittenen Wert für die Quadratwurzel wählen, indem Sie unterschiedliche Werte für die Tabelle auswählen.