WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 18.09.2005, 21:42   #1
Frankster
Veteran
 
Registriert seit: 13.07.2002
Alter: 44
Beiträge: 242


Standard 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
Frankster ist offline   Mit Zitat antworten
Alt 19.09.2005, 08:40   #2
helios
Veteran
 
Registriert seit: 21.06.2001
Beiträge: 343


helios eine Nachricht über ICQ schicken
Standard

ja mit welcher sprache willst du's denn programmieren?
aber generell gesprochen bietet sich wohl ein binäres AND an.
____________________________________
religion is a virus from outer space
helios ist offline   Mit Zitat antworten
Alt 19.09.2005, 09:06   #3
Frankster
Veteran
 
Registriert seit: 13.07.2002
Alter: 44
Beiträge: 242


Standard

In Java.

Je nach dem welche Binärkombination es ist, soll dann folgendes angezeigt werden

Mo Di Mi Do Fr
Mo
Di
Sa

usw............
Frankster ist offline   Mit Zitat antworten
Alt 19.09.2005, 09:39   #4
helios
Veteran
 
Registriert seit: 21.06.2001
Beiträge: 343


helios eine Nachricht über ICQ schicken
Standard

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
if binärkombi AND 0000000100000000 then print "Mo"
if binärkombi AND 0000001000000000 then print "Di"
if binärkombi AND 0000010000000000 then print "Mi"
if binärkombi AND 0000100000000000 then print "Do"
if binärkombi AND 0001000000000000 then print "Fr"
if binärkombi AND 0010000000000000 then print "Sa"
if binärkombi AND 0010000000000000 then print "So"
____________________________________
religion is a virus from outer space
helios ist offline   Mit Zitat antworten
Alt 19.09.2005, 10:08   #5
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

Entweder mit bitweisen Operatoren (&):
Code:
String res;
byte bDatum = (byte) 9472;
byte bMontag = 100000000;
byte bDienstag = 1000000000;
etc.
if ((bDatum & bMontag) == bMontag) res += "Montag";
etc.
oder mit modulo (%) was auch relativ einfach wäre:
Code:
int datum=9472;
int temp = datum;
String res;
if ((temp / 16384) == 1) res = "Sonntag";
temp %= 16384;
if ((temp / 8192) == 1) res += "Samstag";
temp %= 8192;
etc.

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>
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Alt 19.09.2005, 10:47   #6
Frankster
Veteran
 
Registriert seit: 13.07.2002
Alter: 44
Beiträge: 242


Standard

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.
Frankster ist offline   Mit Zitat antworten
Alt 19.09.2005, 18:19   #7
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

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;
byte bDatum = (byte) 9472 >> 8;
byte bMontag = 1;
byte bDienstag = 10;
etc.
if ((bDatum & bMontag) == bMontag) res += "Montag";
etc.
jak
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 22:57 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag