BitFlags Programm (switch on/off , swap und isSet)

NoMercy

Mitglied
Hallo liebe Java-Forum Community,

Ich bin noch ein neu Einsteiger bzw. Anfänger beim Java programmieren. Unswar haben wir ne Aufgabe bekommen:
==============================================
Ich weiß nur nicht wie ich diese swap und isSet programmieren kann. switch.On und - .Off habe ich schon. Als Anhang habe ich mal ein Bild mit dem Programm Code!
===============================================
Implementieren Sie eine Klasse BitFlags, die eine int-Zahl status speichert. Jede einzelne Binärstelle (Bit) der Zahl status repräsentiert ein Flag, d.h. einen booleschen Zustand. Ein Flag kann gesetzt (das Bit hat den Wert 1) oder nicht gesetzt (das Bit hat den Wert 0) sein.

Implementieren Sie folgende Methoden, die ein Flag in der Zahl status an einer bestimmten Position setzen, löschen, umdrehen und überprüfen. Beachten Sie, dass die Position der üblichen Nummerierung der Bits einer Zahl entsprechen sollte (d.h. von rechts nach links, beginnend mit 0).

- BitFlags(int) : Konstruktor, der eine Bitfolge (int-Zahl status) übergeben bekommt - switchOn(int) : setzt das Bit am übergeben Index auf 1

- switchOff(int) : setzt das Bit am übergeben Index auf 0 (d.h. „löscht“ das Bit) - swap(int) : dreht das Bit am übergeben Index um

- isSet(int) : gibt zurück, ob das Bit am übergeben Index gesetzt ist
 

Anhänge

  • bitflags.PNG
    bitflags.PNG
    28,8 KB · Aufrufe: 51
Moin,

(a) poste code bitte immer mit Code-Tags (siehe meine Signatur), nur dann kann man etwas ordentlich zitieren !!
(b) die Fehlermeldung beim SwitchOn/SwitchOff (bitte immer den stacktrace dazu posten!) kommt daher, weil beide Methoden einen Parameter erwarten (hier: Index)!!
Du übergibst aber keinen !!

VG Klaus
 
Java:
public class BitFlags {
    private int status;
   
    BitFlags(int initStatus) {
        this.status = initStatus;
    }
   
    void printFlags() {
        System.out.println(Integer.toBinaryString(this.status));
    }
   
    void switchOn(int index) {
        int parameter2 = 0b1 << index;
       
        this.status = this.status | parameter2;
    }
    // Hier benutzen wir den Operation: Logisches Oder -> ( | ).
   
    void switchOff(int index){
        int parameter2 = 0b1 << index;
       
        this.status = this.status & ~parameter2;
    }
    // Hier benutzen wir die Operation: Logisches Und -> (&). 
    // Und der parameter2 ist hier invertiert -> (~).
   
    void swap(int index){
        int parameter2 = 0b1 << index;
       
        this.status = this.status ^ parameter2;         
    }
    // Hier benutzen wir den Operator XOR (^).
   
    void isSet(int index){
    }
   
    public static void main(String[] args) {
    BitFlags bFlags = new BitFlags(0x8);
       
        System.out.print("Bit-Darstellung:  ");     
        bFlags.printFlags();
        //Gibt hier den "normalen Bit-Wert" an.
       
        System.out.print("SwitchOn:  "); 
            bFlags.switchOn(1);
            bFlags.printFlags();
        //Gibt den Bit aus, an den übergebenden Index auf 1  gesetzt wurde.
           
        System.out.print("SwitchOff:  ");
            bFlags.switchOff(1);
            bFlags.printFlags();
        //Gibt den Bit aus, an den übergebenden Index auf 0  gesetzt wurde.
        // bzw. löscht den Bit.
           
        System.out.print("Swap:  ");
            bFlags.swap(1);   
            bFlags.printFlags();
        //Dreht den Bit am übergebenen Inden um.
           
        System.out.print("isSet:  ");
            bFlags.isSet(0);
            bFlags.printFlags();       
        //Gibt den den Bit, am übergebenden Index das gesetzt wurde zurück.
    }
}
 
Okay. Entschuldigung @VfL_Freak nochmal. Wie gesagt ich bin ein totaler Anfänger und bin zum ersten mal hier.
Meine Frage wie kann ich das mit isSet machen ( So das ich weiß das Bit ist gesetzt oder nicht gesetzt 1 oder 0 Wie oben in der Frage) ?
 
Vielen Dank Klaus.
Die Seite ist echt nice. Danke.

Okay somit sind meine Fragen eig beantwortet. Nochmal danke an alle die geholfen haben.
 

Zurück
Oben