Serie2.pdf
Serie2.pdf
—
PDF document,
287 KB
Serie1.pdf
—
PDF document,
214 KB
Serie2.pdf
—
PDF document,
287 KB
Serie01_PA-Musterlösung_WS1819.pdf
—
PDF document,
109 KB
Serie02_PA-Musterlösung_WS1819.pdf
—
PDF document,
194 KB
Serie3.pdf
—
PDF document,
310 KB
Serie03_PA-Musterlösung_WS1819.pdf
—
PDF document,
181 KB
Serie4a.pdf
—
PDF document,
322 KB
Serie4.pdf
—
PDF document,
318 KB
hausaufgabe2.c
—
C source code,
2 KB
#include <stdio.h> void printBinary(int zahl, int stellen) { // Aufgabe a) if (stellen<=0 || stellen>sizeof(int)*8) // Kommentar { stellen=sizeof(int)*8; // Kommentar } for (int i=stellen-1; i>=0; i--) // Kommentar { int b; // Kommentar b = zahl >> i; // Kommentar b = b & 0x00000001; // Kommentar printf("%X",b); // Kommentar if ((i%8) == 0) printf(" "); // Kommentar } } int main() { // Interpretation IEEE Floatformat unsigned int vorzeichen, mantisse, exponent ; //Natuerliche Zahlen Vorzeichen, Exponent, Mantisse. Nutzen Sie diese Variablen zur Speicherung der Komponenten der IEEE-Zahl char expUnbiased; // Fuer den Exponenten ohne Bias float eingabe; // zu interpretierende Zahl union { // dient zur Adressierung der Bitfolge der floatzahl ieee.f mittels der Integerzahl ieee.i float f; unsigned int i; } ieee; printf("Gib die zu analysierende Zahl ein: "); scanf("%f",&eingabe); // lies die Zahl ein // Wert von ieee mittels Floating Point-Repraesentation ieee.f auf eingabe setzen ieee.f = eingabe; // Geben Sie hier Ihr Codefragment fuer Aufgabe b) ein // Beachten Sie: Bitweise logische Operationen und Shifts sind nur fuer die // Integer-Repraesentation ieee.i definiert // Ausgabe der Zerlegung, nutzen Sie diesen Code fuer die Ausgabe: printf("Float %f als Hex %X ist zerlegt in\nVorzeichen %d \nMantisse %X, \nExponent %d, \nExpUnbiased %d\n", ieee.f, ieee.i, vorzeichen, mantisse, exponent, expUnbiased); printf("\nVorzeichen ist \t"); printBinary(vorzeichen,1); printf("\nMantisse binaer ist \t"); printBinary(mantisse,23); printf("\nExponent binaer ist \t"); printBinary(exponent,8); printf("\nExpUnbiased binaer ist \t"); printBinary(expUnbiased,8); // Pruefe die Sonderfaelle // Fuegen Sie Ihren Code fuer Aufgabe c) ein (die vier Sonderfaelle) // Fuer den Standardfall (normalisiert), bauen Sie die IEEE-Zahl wieder zusammen, // so dass sie ueber ieee.f ausgegeben werden kann: // Fuegen Sie Ihren Code fuer Aufgabe d) hier ein. Geben Sie die Zahl mit printf("Zahl ist: %f\n", ieee.f); // aus. return 0; }
Serie04_PA-Musterlösung_WS1819.pdf
—
PDF document,
308 KB
präsenzaufgabe2_loesung.c
—
C source code,
2 KB
#include <stdio.h> int main() { /* Gib die Anzahl der signifikanten Stellen des Betrags einer ganzen Zahl aus eingabe: zu analysierende Zahl, betrag: positiver Wert von eingabe, stellen: Anzahl der signifikanten Stellen von betrag als Ausgabe, maxStellen: maximal moegliche Stellenanzahl von betrag als Integerzahl */ int eingabe, betrag, stellen, maxStellen; printf("Gib ganze Zahl ein: "); scanf("%d",&eingabe); maxStellen= sizeof(int) << 3; // Berechne Bitanzahl durch Byteanzahl * 8 if (eingabe==0) { printf("Sonderfall eingabe=0, keine Auswertung\n"); return 0; } // Jetzt Studentencode Aufgabe a) int bit; // Test auf Vorzeichen in MSB maxStellen--; // Beginne Zaehlung maxStellen-1 bis 0 bit = eingabe & 1 << maxStellen; // Selektiere bit MSB if (bit==0) { betrag=eingabe; // Eingabe war schon positiv, betrag=eingabe printf("Zahl ist positiv!\n"); printf("MSB: %x\n",bit); } else { bit=1; // wenn eine 1 in MSB, dann ist Eingabe negativ printf("Zahl ist negativ!\n"); printf("MSB: %x\n",bit); // Konvertiere negative Zahl in Betrag mit 2-Komplement printf("Zahl = %d, %x\n", eingabe ,eingabe); betrag = ~eingabe; // 1-Komplement printf("1-Komplement= %d, 0X%X\n", betrag, betrag); betrag++; printf("Betrag (2-Komplement)= %d, 0X%X\n", betrag, betrag); } // Code Aufgabe a) zu Ende // Studentencode Aufgabe b) // Berechne signifikante Stellen ueber das Auffinden des höchstwertigen "1"-Bits // Hierzu maskiere einzelne Bits absteigend, bis eines ungleich 0 ist stellen = maxStellen; // starte bei MSB-Stelle, die ist sicher 0 bit = 0; while (bit==0) { stellen--; // naechste Stelle testen bit = betrag & 1 << stellen; // wenn bit !=0, echtes MSB gefunden, sonst weiter } stellen++; // Anahl der sig. Stellen festlegen // Code Aufgabe b) zuende printf("Zahl hat %d signifikante Stellen\n",stellen); return 0; }
Serie5.pdf
—
PDF document,
221 KB
praesenzaufgabe4.c
—
C source code,
1 KB
#include<stdio.h> int main() { int imax = 4; int kmax = 3; for (int i=0;i<imax;i++) { for (int k=0;k<kmax;k++) { int value = i*kmax+k; if (value > 0) printf(" "); printf("%d", value); } } }
hausaufgabe3.c
—
C source code,
1 KB
#include <stdio.h> int func(int x2, int x1, int x0) { // Aufgabe 3a) // Berechnen Sie das Ergenis der Booleschen Funktion und // geben den resultierenden Wert zurück } int main() { // Aufgabe 3b) // Geben Sie hier den Tabellenkopf aus // Nutzen Sie verschachtelte for-Schleifen, um // alle moeglichen Eingabekombinationen zu durchlaufen // Geben Sie in der inneren Schleife die jeweiligen // Tabellenzeilen aus // Aufgabe 3c) // Erweitern Sie die Tabelle um die Spalte "Mintermfunktion" // wie in der Beispielausgabe gezeigt return 0; }
Serie05_PA-Musterlösung_WS1819.pdf
—
PDF document,
181 KB
hausaufgabe3_loesung.c
—
C source code,
1 KB
#include <stdio.h> int func(int x2, int x1, int x0) { return (!x2 && x0 || x2 && x1 || !x2 && !x0) && (x0 || x1) && (!x2 && x1 || x2 && !x1); } void printVariable(int val, char *name) { // Gib abhängig vom Wert der Variable ein Leerzeichen oder ein Ausrufezeichen aus, // damit die Variablen untereinander stehen if(val) { printf(" "); } else { printf("!"); } printf("%s", name); } int main() { // Gib den Tabellenkopf aus printf("x2 x1 x0 | f | Mintermfunktion\n"); printf("------------------------------\n"); // Schleife über alle Eingabevariablen, // damit jede Kombination getestet wird for(int x2 = 0; x2 < 2; x2++) { for(int x1 = 0; x1 < 2; x1++) { for(int x0 = 0; x0 < 2; x0++) { // berechne den Wert der Funktion int result = func(x2, x1, x0); // gib die Eingabevariablen und das Ergebnis aus printf(" %d %d %d | %d | ", x2, x1, x0, result); // wenn das Ergebnis wahr ist, gibt den Minterm aus if(result) { printVariable(x2, "x2"); printVariable(x1, "x1"); printVariable(x0, "x0"); } printf("\n"); } } } return 0; }
praesenzaufgabe4 Lsg Serie5.c
—
C source code,
1 KB
#include<stdio.h> int main() { // initialisiere Parameter imax und kmax int imax = 4; int kmax = 3; // nutze zwei verschachtelte for-Schleifen fuer die Berechnung des // auszugebenden Werts for (int i=0;i<imax;i++) { for (int k=0;k<kmax;k++) { // Berechne auszugebenden Wert int value = i*kmax+k; // Gib Element und Leerzeichen aus if (value > 0) printf(" "); printf("%d", value); } } }
praesenzaufgabe3 Lsg Serie5.c
—
C source code,
1 KB
int func(int x2, int x1, int x0) { // Direkte Uebersetzung der Booleschen Funktion // Es sind keine weiteren Klammern notwendig , da die // jeweilige Bindungsstaerke der Operatoren in C uebereinstimmt return(!x1 && x0 || x1 && ! x0 || x2 && x1 ) && ( x2 || !x0); }
Serie7.pdf
—
PDF document,
189 KB
Serie6.pdf
—
PDF document,
169 KB
Serie06_PA-Musterlösung_WS1819.pdf
—
PDF document,
190 KB
Serie07_PA-Musterlösung_WS1819.pdf
—
PDF document,
90 KB
Serie8.pdf
—
PDF document,
786 KB
Serie08_PA-Musterlösung_WS1819.pdf
—
PDF document,
806 KB
Serie9.pdf
—
PDF document,
161 KB
Serie09_PA-Musterlösung_WS1819.pdf
—
PDF document,
204 KB
Serie10.pdf
—
PDF document,
160 KB
Serie10_PA-Musterlösung_WS1819.pdf
—
PDF document,
118 KB
Serie11.pdf
—
PDF document,
325 KB
Serie11_PA-Musterlösung_WS1819.pdf
—
PDF document,
158 KB
Aufgabenblatt_Serie12.pdf
—
PDF document,
675 KB
PA_Lösung_Serie_12.pdf
—
PDF document,
184 KB
Aufgabenblatt_Serie13.pdf
—
PDF document,
142 KB
PA_Lösung_Serie13.pdf
—
PDF document,
321 KB