Hallo zusammen !
Ich habe hier eine Funktion, die ich nicht ganz nachvollziehen kann:
Diese Funktion soll ermitteln, ob ein Bit an einer bestimmten Stelle gesetzt ist. Dazu wird ihr eine beliebige Zahl übergeben (nehmen wir mal an es sei die 8) und als zweiter Parameter die Position, die ich ermitteln möchte (gehen wir mal von der 3 in diesem Fall aus).
Nun müsste doch eigentlich durch die Rechtsverschiebung eine ungerade Zahl herauskommen und somit das Bit gesetzt sein, oder sehe ich das falsch?
MFG
Die 8 im Binärformat sehe so aus: 0000 1000
Nun will ich prüfen, ob an der 4 Stelle das Bit gesetzt ist, also tätige ich folgenden Methodenaufruf:
isBitAvailable(8,4);
Ich habe hier eine Funktion, die ich nicht ganz nachvollziehen kann:
Code:
public static boolean isBitAvailable(int number, int position) {
position--;
number = number >> position;
if (number % 2 == 0) {
// Bit ist nicht gesetzt
return false;
} else {
// Bit ist gesetzt
return true;
}
}
Diese Funktion soll ermitteln, ob ein Bit an einer bestimmten Stelle gesetzt ist. Dazu wird ihr eine beliebige Zahl übergeben (nehmen wir mal an es sei die 8) und als zweiter Parameter die Position, die ich ermitteln möchte (gehen wir mal von der 3 in diesem Fall aus).
Nun müsste doch eigentlich durch die Rechtsverschiebung eine ungerade Zahl herauskommen und somit das Bit gesetzt sein, oder sehe ich das falsch?
MFG
Die 8 im Binärformat sehe so aus: 0000 1000
Nun will ich prüfen, ob an der 4 Stelle das Bit gesetzt ist, also tätige ich folgenden Methodenaufruf:
isBitAvailable(8,4);