Hallo Java Freunde,
ich benötige wieder einmal Verständnis Hilfe.
Ich habe hier folgenden Code Ausschnitt um den es geht:
Ich habe oben eben verschiedene ints definiert, hier ein Auszug:
Der obigen Funktion wird in meinen Beispiel der long Wert 2 übergeben. Ich verstehe dann aber nicht, warum bei der letzten IF Prüfung bRet = True aufgerufen wird.
receiveEmails hat den Wert 11739
Dieser wird durch die "Verundung" der ints zusammengezählt. Nun wird in dieser Funktion geprüft, ob 2 (also BIRTHDAY) in dieser Maske enthalten ist (für eine Berechtigung). Aber woher weiß das System, dass die Bits 2 in dieser Zahl 11739 gesetzt sind?
Ich kenn das Binäre System, also dass zwei 00010 zB ist. Aber ich check nicht wie das System intern da vorgeht, dass zB BIRTHDAY und EVENT in dieser Zahl 11739 gesetzt sind...
Vll kann mir jemand helfen?
edit:
Jetzt habe ich es mal aufn Papier gemacht. Wenn ich zB als Wert 272 in der Datenbank habe, dann können das ja nur zwei Muster sein:
256 und 16
Andere Werte sind ja gar nicht möglich laut der Rechnung. Also müsste die IF Prüfung mir oben bei 272 einmal bei 256 und bei 16 TRUE rausschmeißen. Ich glaub ich habs kapiert
Hoffe ich jedenfalls. Weil 128 und 64 und 32 und 16 ... zusammenaddiert kommt man ja nicht auf den Wert 
ich benötige wieder einmal Verständnis Hilfe.
Ich habe hier folgenden Code Ausschnitt um den es geht:
Code:
public boolean hasRecieveEmailMasks(long... masks) {
boolean bRet = true;
if (masks != null && masks.length > 0) {
bRet = false;
for (long mask : masks) {
if ((recieveEmails & mask) == mask) {
bRet = true;
break;
}
}
}
return bRet;
}
Ich habe oben eben verschiedene ints definiert, hier ein Auszug:
Code:
public static final int BIRHDAY = 2;
public static final int NAME=4;
public static final int bookmarked = 8;
public static final int EVENT = 16;
public static final int letzter_wert = 1024;
Der obigen Funktion wird in meinen Beispiel der long Wert 2 übergeben. Ich verstehe dann aber nicht, warum bei der letzten IF Prüfung bRet = True aufgerufen wird.
receiveEmails hat den Wert 11739
Dieser wird durch die "Verundung" der ints zusammengezählt. Nun wird in dieser Funktion geprüft, ob 2 (also BIRTHDAY) in dieser Maske enthalten ist (für eine Berechtigung). Aber woher weiß das System, dass die Bits 2 in dieser Zahl 11739 gesetzt sind?
Ich kenn das Binäre System, also dass zwei 00010 zB ist. Aber ich check nicht wie das System intern da vorgeht, dass zB BIRTHDAY und EVENT in dieser Zahl 11739 gesetzt sind...
Vll kann mir jemand helfen?
edit:
Jetzt habe ich es mal aufn Papier gemacht. Wenn ich zB als Wert 272 in der Datenbank habe, dann können das ja nur zwei Muster sein:
256 und 16
Andere Werte sind ja gar nicht möglich laut der Rechnung. Also müsste die IF Prüfung mir oben bei 272 einmal bei 256 und bei 16 TRUE rausschmeißen. Ich glaub ich habs kapiert


Zuletzt bearbeitet: