Einfache C- Programme mit logischen und Bit Operatoren

  • Hallo Forum.

    Ich hänge gerade an zwei Gruppenaufgaben, die euch wohl total einfach fallen. Das ganze wird in Codeblocks mit C programmiert.

    Hier dürfen nur logische Operatoren verwendet werden:

    3. ob Wert der ganzzahligen Variablen z ungerade ist und
    zugleich auch durch 3 und 5 teilbar ist:
    (für z = 15)
    4. ob der Wert der ganzzahligen Variablen jahr
    - durch 400 oder
    - durch 4, aber nicht durch 100 teilbar ist (Bedingung für ein Schaltjahr):
    (für jahr = 2100)
    5. ob das Produkt der beiden int-Variablen a und b in den Datentyp unsigned char
    ohne Überlauf untergebracht werden kann:
    (für a = 25 und b = 10)
    6. ob der Wert der char-Variablen antwort
    weder das Zeichen ’j’ noch das Zeichen ’J’ enthält:
    (für antwort = ’A’)
    7. ob der Wert der int-Variablen zaehler nicht im Intervall [5,25] liegt:
    (für zaehler = 30)

    Hier nur logische & Bit Operatoren:

    1. ob der Wert der short-Variablen x ungerade ist.
    (für x = 7)
    2. ob der Wert der unsigned short-Variablen u groesser als 255 ist.
    (für u = 256)
    3. ob das 7.Bit (von links her gezählt) in der unsigned short-Variablen u auf 1 gesetzt ist.
    (für u = 520)
    4. ob der Wert der short-Variablen x im Intervall [0,127] liegt.
    (für x = 120)
    5. ob der Wert der unsigned short-Variablen u durch 4 teilbar ist.
    (für u = 43)


    Gibt es da irgendwelche Tricks für? Ich krieg die Programme einfach nicht zum laufen.

    Danke und Grüße vinc

  • Logische Operatoren arbeiten wie man es von der Booleschen Algebra her kennt: man rechnet also mit den Zahlen {0,1} bzw. {false,true} und hat Operatoren wie UND, NICHT, ODER, ... zur Verfügung.
    Bitoperatoren hingegen arbeiten auf der Bitebene, dazu schaust du dir am besten an wie eine Ganzzahl auf einem Computer dargestellt wird: https://de.wikipedia.org/wiki/Integer_%28Datentyp%29

    nur eines deiner Beispiel herausgegriffen:

    1. ob der Wert der short-Variablen x ungerade ist.
    (für x = 7)

    dazu legt du eine Variable im C Programm an:

    Code
    short x=7;

    eine Ganzzahl besteht aus einer Aneinanderreihung von Bits: (b15,b14,...,b2,b1,b0).
    Eine ungerade Zahl ist eine Zahl, bei der die Einserstelle in der Binärrepräsentation gesetzt ist.
    Also z.B. 000...0001=1 oder 000...0011=3 oder eben auch 000...0111=7.

    Somit musst du im C Programm prüfen, ob die Einerstelle auf 1 gesetzt ist: dazu verwendest du ein binäres UND: du verknüpfst jedes Bit der Variable x mit der Binärrepräsentation von 1=00....0001, d.h. nur wenn in x die Einerstelle auf 1 gesetzt ist ist auch das Ergebnis 1 und somit wird dann auch der if - Block ausgeführt.

    Code
    if(x&1)
    {
       printf("Die Zahl %d ist ungerade", x);
    }

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!