Franz Degenhardt
Erfahrenes Mitglied
Hallo!
nextInt(int) ist in java 1.4.2 folgendermassen implementiert:
Irdendwie kamen mir da Zweifel am Sinn der Implentierung. Ist der Ausdruck
(n & -n) == n nicht immer wahr für positive n?
Und wenn ja, wieso ist die Methode danach nicht zuende. Hat dafür jemand eine Erklärung?
Grüsse TrueSun
nextInt(int) ist in java 1.4.2 folgendermassen implementiert:
Code:
public int nextInt(int n) {
if (n<=0)
throw new IllegalArgumentException("n must be positive");
if ((n & -n) == n) // i.e., n is a power of 2
return (int)((n * (long)next(31)) >> 31);
int bits, val;
do {
bits = next(31);
val = bits % n;
} while(bits - val + (n-1) < 0);
return val;
}
(n & -n) == n nicht immer wahr für positive n?
Und wenn ja, wieso ist die Methode danach nicht zuende. Hat dafür jemand eine Erklärung?
Grüsse TrueSun