![]() |
Kombination von Tagen ?
Hi!
Folgendes Problem: Eine timer wiederholung sieht folgendermaßen aus 0000000100000000 = 256 = Montag 0000001000000000 = 512 = Dinstag 0000010000000000 = 1024 = Mittwoch 0000100000000000 = 2048 = Donerstag 0001000000000000 = 4096 = Freitag 0010000000000000 = 8192 = Samstag 0100000000000000 = 16384 = Sontag Demzufolge ist Montag+ Mittwoch+ Samstag 0000000100000000 = 256 0000010000000000 = 1024 0010000000000000 = 8192 ---------------- ---- 0010010100000000 = 9472 Wie programmiert man das am besten ? weil wenn ich mo di, fr kombiniere, dann sieht die Zahl komplett anders aus, als wenn ich nur den montag wähle und wenn ich jetzt jeden mit jeden vergleiche wird die Abfrageliste unendlich Mfg Frankster |
ja mit welcher sprache willst du's denn programmieren?
aber generell gesprochen bietet sich wohl ein binäres AND an. |
In Java.
Je nach dem welche Binärkombination es ist, soll dann folgendes angezeigt werden Mo Di Mi Do Fr Mo Di Sa usw............ |
naja java kann ich nicht, aber wie gesagt mit einem bit-AND (das gibts wohl auch in java) kannst du das machen.
um bei deinem beispiel (0010010100000000 = 9472) zu bleiben, der folgende pseudocode: Code:
binärkombi = 0010010100000000 |
Entweder mit bitweisen Operatoren (&):
Code:
String res; Code:
int datum=9472; Es müsste auch möglich sein mit "shift-rechts" (>>) etwas zu basteln (der >> Operator (a >> b) verschiebt ein Bitmuster a um b Stellen nach rechts, entspricht also Einer Division durch 2^b). Code sollte funktionieren, muß aber nicht.. jak <edit>Zu langsam...</edit> |
Hi!
Danke Leute :) Ich werd mich mal einlesen in Binärkominatorik @jak byte bDatum = (byte) 9472; funktioniert in Java nicht, bzw ich habs noch nicht herausgefunden, weil als Ergebnis 0 raus kommt. Ich hab da eine kleine Funktion geschrieben die eine Dez in eine Bin Zahl umwandelt. |
Da hast du natürlich recht, byte = 2^8 d.h. von -127 bis +127 bzw. von 0 bis 255
In deinem Fall kommt Null raus, weil die ersten 8 Bit nicht verwendet werden (==immer 0 sind). Java wirft bei "Illegalen" Typecasts keine Exceptions sondern nimmt den Teil den es verarbeiten kann. In diesem Fall sind das die ersten 8Bit die wie schon erwähnt 0 sind. Es sollte funktionieren wenn du den >> Operator verwendest: Code:
String res; |
Alle Zeitangaben in WEZ +2. Es ist jetzt 13:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag