Hi,
ich möchte einen Ringspeicher adressieren. Der Speicherbesteht aus einem Array das z.B. 512 Elemente lang ist und hat einen Zeiger der am Anfang auf dem Element 0, also array[0], steht. Wird ein Element eingeschrieben wird danach der Zeiger inkremetiert, ist der Zeiger >= 512 wird er wieder auf 0 gesetzt. Soweit, so gut!
Ein Problem trit jetzt auf wenn z.B. der Zeiger auf 100 steht und ich das 101. Element _VOR_ dem Zeiger adressieren möchte. Um die Position im Array zu berechnen wollte ich es so machen:
array[zeiger+gewünschtesElemet % Arraylänge]
=
array[100 - (-101) % 512]
=
array[-1 % 512]. Das sollte eigentlich 511 ergeben, ergibt in Java(!) aber -1!
Nun könnte ich das zu Fuß mit If(...) und so machen aber die Operation wird in meiner Anwendung sehr oft (>>100.000.000) verwendet und soll deshalb sehr performant sein.
Gibt es in Java eigentlich gar keinen "richtigen" Modulo Operator?
Gruß
Rol
ich möchte einen Ringspeicher adressieren. Der Speicherbesteht aus einem Array das z.B. 512 Elemente lang ist und hat einen Zeiger der am Anfang auf dem Element 0, also array[0], steht. Wird ein Element eingeschrieben wird danach der Zeiger inkremetiert, ist der Zeiger >= 512 wird er wieder auf 0 gesetzt. Soweit, so gut!
Ein Problem trit jetzt auf wenn z.B. der Zeiger auf 100 steht und ich das 101. Element _VOR_ dem Zeiger adressieren möchte. Um die Position im Array zu berechnen wollte ich es so machen:
array[zeiger+gewünschtesElemet % Arraylänge]
=
array[100 - (-101) % 512]
=
array[-1 % 512]. Das sollte eigentlich 511 ergeben, ergibt in Java(!) aber -1!
Nun könnte ich das zu Fuß mit If(...) und so machen aber die Operation wird in meiner Anwendung sehr oft (>>100.000.000) verwendet und soll deshalb sehr performant sein.
Gibt es in Java eigentlich gar keinen "richtigen" Modulo Operator?
Gruß
Rol