Zastanawiam się, czy ktoś tutaj wie, co to jest warunki zakończenia w następujące pętli ma oznaczać.Co oznacza niniejszy warunek zakończenia pętli Java?
for (int i = 0; i < 1 << Level; i++) {
...
}
Zastanawiam się, czy ktoś tutaj wie, co to jest warunki zakończenia w następujące pętli ma oznaczać.Co oznacza niniejszy warunek zakończenia pętli Java?
for (int i = 0; i < 1 << Level; i++) {
...
}
<<
przesuwa bity pierwszego argumentu n
razy po lewej stronie, gdzie n
jest drugi argument operacji.
Dlatego 1 << Level
przesuwa się pojedynczy 1
bitu liczby 1
Level
razy w lewo, co jest równoznaczne z obliczenia 2^poziom.
Tak i < 1 << Level
jest odpowiednikiem .
Krótko mówiąc
for (int i = 0; i < 1 << Level; i++) {
...
}
jest równa
for (int i = 0; i < Math.pow(2,Level); i++) {
...
}
Więc dla pętli potrwa "Math.pow (2 poziom)" razy ponieważ liczą od 0 do Math.pow (2, poziom) -1.
jeśli Poziom = 2, to pętla jest
for(int i =0;i<4;i++){}
jeśli Poziom = 3, to pętla jest
for(int i =0;i<8;i++){}
jeśli Poziom = 5 Następnie pętla jest
for(int i =0;i<32;i++){}
W oprócz innych odpowiedzi może pomóc wstawienie nawiasu wokół wyrażenia, jeśli to jest niejasne
for (int i = 0; i < (1 << Level); i++) {
...
}
także od Level
jest zmienną zaleca się mieć małą literę tj level
chyba że jest to stała, to powinno być LEVEL
. I ogólnie uważam, że czytelność> wydajność (jeśli jest to nawet problem?). Tak więc Math.pow(2,Level)
jest o wiele łatwiejsze do zrozumienia, jeśli nie jesteś programistą niskiego poziomu, wygląda bardziej jak Java niż C.
'<<' jest operatorem bitowym. mnoży się 2 razy. –