Der 2. Ansatz ist
imho sinnvoller. Falls du negative Werte zulassen willst, kannst du ja das höchste Bit des höchsten Cardinals selbst verwalten über maskieren.
Vergleichen ginge recht einfach im Prinzip: Fange beim höchstwertigen Cardinal an. Ist eines größer als das andere, bist du schon fertig. Sind sie gleich, zum nächst kleinerwertigen, und so weiter und so fort. Haste das eine Bit für negative Zahlen mit drin, muss das natürlich als erstes ausgewertet werden. Ist des bei 2 zu vergleichenden Werten schon unterschiedlich, ist eine größer/kleiner Aussage trivial, sind sie gleich musst du im Falle negativer Zahlen alle weiteren Vergleiche lediglich umkehren "not(a>b)" z.B.. Also dort dann noch eine Fallunterscheidung vorschalten.
Ich bin sicher Hagen könnte mit etwas deutlich performaterem aufwarten
, aber das ist denke ich ein gut verständlicher naiver Ansatz, der auch einigermaßen flott abzuhandeln sein sollte.
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel