Universität Ulm - Abteilung Angewandte Informationsverarbeitung
2.Übungsblatt (31.10.00 bis 07.11.00)
zur Vorlesung Allgemeine Informatik III (WS 00/01)


Bitte ein Bit!

Aufgabe 1 (2 Punkte)

Geben Sie jeweils einen (maschinenunabhängigen) Bit-Verknüpfungsausdruck unter C an, der

a) die höchste 2er-Potenz repräsentiert, die als Integer auf der Maschine (durch den Compiler) darstellbar ist
b) die höchste Integerzahl repräsentiert, die auf der Maschine (durch den Compiler) darstellbar ist
 

Aufgabe 2 (3 Punkte)

Schreiben Sie ein C-Makro #define setze(a,n),  das das n.te Bit der Integerzahl a setzt.

Bsp.: setze(5,2) liefert 7 als Resultat (Warum wohl?)

Testen Sie das Ergebnis von 1b), indem Sie durch eine for-Schleife nacheinander alle Bits einer Integerzahl setzen.
 

Aufgabe 3 (4 Punkte)

Schreiben Sie ein C-Makro max3(a,b,c), das das Maximum der 3 Zahlen a, b und c zurückgibt. Schreiben Sie zum Vergleich eine Programmsequenz von if-Statements, die nach dem Durchlaufen in der int-Variable max das Maximum von a,b und c enthält:

#define max3(a,b,c)        /* still to do */

int main() {
    int a, b, c, m1, m2;

    a = 5; b = 6; c = 1; m1 = 0;
    /* Programmsequenz if-statements hier einfügen    */
    ....
    /* am Ende soll m1 das Maximum (hier: 6) enthalten */
    m2 = max3(a, b, c);
    if (m2!=m1)
        puts("wer war das?");
    else
        puts("die Welt ist in Ordnung!");
}
 

Aufgabe 4 (1 Punkt)

Erweitern Sie das Shellskript gc aus der Vorlesung

thales$ cat gc
gcc -o $1 $1.c

dahingehend, dass es eine weitere Option an den gcc durchreichen kann (z.B. -Wall).

Hinweis: