Hallo zusammen!!!
Ich halte mich hier gerade an einer Aufgabe auf.
Gegeben:
-short Variable namens "flags" (die Bits sollen eine 16er Lichterkette steuern)
- das n-te Bit von "flags" entspricht der n-ten Lampe der Kette (0te Bit = Lampe 1....15te Bit= lampe 16)
-byte variable names "k" mit einem Wert zw. 0 und 15
Jetzt soll der Wert des "k"ten Bits von "flags" (also Zustand der Lampe "k") in einer weiteren Variable "b" gespeichert werden.
Mein Ansatz:
Da ich mehrere Aufgaben löse, habe ich diese jeweils als Funktionen implementiert.
Hier habe ich schon das Problem das mich Java kein Byte übergeben lässt ( das k).
Stimmt es, dass da nur Int und höher geht?
Ein short testFlags erstellen und mittels shift an die "k"te Stelle eine 1 schieben.
Anschließend per "&" abgleichen.
Allerdings ist das 16te Bit zu viel(short)
Jetzt suche ich mir einen Wolf wie ich das machen kann.
(vllt mit Integer.toBinaryString() ???)
Mein Code:
Lasse ich die 15te Stelle weg (oder setze sie null) - gibt es keine Probleme.
Mache ich dies nicht, dann bekomme ich den Fehler:
...error: incompatible types: possible lossy conversion from int to short
An der Stelle short flags =5.....;
Entschuldigt die Formatierung und Kommentare (waren meine Notizen).
Ich bin recht neu in dem ganzen und würde mich über einen Denkanstoß freuen.
Ich halte mich hier gerade an einer Aufgabe auf.
Gegeben:
-short Variable namens "flags" (die Bits sollen eine 16er Lichterkette steuern)
- das n-te Bit von "flags" entspricht der n-ten Lampe der Kette (0te Bit = Lampe 1....15te Bit= lampe 16)
-byte variable names "k" mit einem Wert zw. 0 und 15
Jetzt soll der Wert des "k"ten Bits von "flags" (also Zustand der Lampe "k") in einer weiteren Variable "b" gespeichert werden.
Mein Ansatz:
Da ich mehrere Aufgaben löse, habe ich diese jeweils als Funktionen implementiert.
Hier habe ich schon das Problem das mich Java kein Byte übergeben lässt ( das k).
Stimmt es, dass da nur Int und höher geht?
Ein short testFlags erstellen und mittels shift an die "k"te Stelle eine 1 schieben.
Anschließend per "&" abgleichen.
Allerdings ist das 16te Bit zu viel(short)
Jetzt suche ich mir einen Wolf wie ich das machen kann.
(vllt mit Integer.toBinaryString() ???)
Mein Code:
Code:
public static void flagWert(int k) //Typ Byte kann nicht übergeben werden,daher int
{
short flags = 58254; //58254 => 1110001110001110 in binary ;
//Stelle 15 von 0-15 ist zu viel für short?!
short testflags = (short)(0b1<<k);
//Integer.toBinaryString(testflags<<k);?!?!
int b=0;
if ((flags & testflags)>0)
{
b=1;
System.out.println("Die Lampe "+k+" leuchtet. Zustandswert: "+b);
}
else
{
System.out.println("Die Lampe "+k+" leuchtet nicht. Zustandswert: "+b);
}
}
Mache ich dies nicht, dann bekomme ich den Fehler:
...error: incompatible types: possible lossy conversion from int to short
An der Stelle short flags =5.....;
Entschuldigt die Formatierung und Kommentare (waren meine Notizen).
Ich bin recht neu in dem ganzen und würde mich über einen Denkanstoß freuen.
Zuletzt bearbeitet: