Hausaufgabe 11 loesung WiSe 2018/2019 PDF

Title Hausaufgabe 11 loesung WiSe 2018/2019
Course Einführung in die Informatik
Institution Technische Universität Berlin
Pages 16
File Size 353.6 KB
File Type PDF
Total Downloads 51
Total Views 127

Summary

Download Hausaufgabe 11 loesung WiSe 2018/2019 PDF


Description

Einführung in die Informatik - WS 2018/19 Technische Universität Berlin

Neuronale Informationsverarbeitung

Übungsblatt 11 (Block 3) Prof. Dr. Klaus Obermayer und Mitarbeiter Zweierkomplement

Verfügbar ab: Abgabe bis:

14.01.19 21.01.19-25.01.19

Aufgabe 1: Zweierkomplement-Darstellung

2 Punkte

a) Welchen Bereich deckt eine 5-Bit-Dualzahl ab? b) Welchen Bereich deckt ein 6-Bit-Zweierkomplement ab? c) Vervollständigen Sie die nachfolgende Tabelle. Zahl zur Basis 10 0 -4 -2

Zweierkomplement (4 Bit)

1001 1010 0101

Musterlösung: a) Welchen Bereich deckt eine 5-Bit-Dualzahl ab? [0,1,...,31] b) Welchen Bereich deckt ein 6-Bit-Zweierkomplement ab? [-32,-31,...,31] c) Vervollständigen sie die nachfolgende Tabelle. Zahl zur Basis 10 0 -4 -2 -7 -6 5

Zweierkomplement (4 Bit) 0000 1100 1110 1001 1010 0101

Aufgabe 2: Rechnen im Zweierkomplement

3 Punkte

Führen Sie die nachfolgenden Operationen in 4 Bit unter Verwendung eines zusätzlichen Checkbits aus, um Bereichsüberschreitungen festzustellen. Wandeln Sie dazu die Zahlen ins Zweierkomplement um und berechnen

weitere Informationen unter https://isis.tu-berlin.de/course/view.php?id=14110

1

InfTech

WS 2018/19

Übungsblatt 11 (Block 3)

Sie in dieser Darstellung die Ergebnisse. Geben Sie an, ob (und wenn ja, wo) ein Über- bzw. Unterlauf entsteht. (i) 3(10) + (6(10) + 3(10)) (ii) (−3(10)) − 4(10) + (−5(10)) Hinweis: Der Lösungsweg muss erkennbar sein!

Musterlösung: (i) 6(10): 0 0110(2 K ) + 3(10): 0 0011(2 K ) Überlauf −7(10): 0 1001(2 K ) 3(10): 0 0011(2 K ) + (−7)(10): 1 1001(2 K ) −4(10): 1 1100(2 K ) (ii)

−3(10): 1 1101(2 K ) − 4(10): 0 0100(2 K ) −7(10): 1 1001(2 K ) −7(10): 1 1001(2 K ) + (−5)(10): 1 1011(2 K ) Unterlauf 4(10): 1 0100(2 K ) Nur Java Aufgabe 3: Zweierkomplement-Rechner

5 Punkte

In dieser Aufgabe soll die Klasse ZKZahl vervollständigt werden. Die Klasse ZKZahl soll der Speicherung eines 32-Bit Zweierkomplements dienen und enthält das Attribut zk, welches vom Typ boolean-Array ist und eine Zahl in Zweierkomplementdarstellung (mit 32 Stellen) repräsentiert. Eine 1 ist als true, eine 0 als false zu interpretieren. Hinweis: Anders als letzte Woche steht 20 im Array an der Stelle mit dem Index 0, 21 an der mit dem Index 1 usw. Implementieren Sie (nicht unbedingt in dieser Reihenfolge): • Die public-Methode intToBoolArrayZK, welche eine int-Zahl entgegennimmt und die entsprechende Repräsentation als boolean-Array (im oben beschriebenen Format) zurückgibt. • Zwei parametrisierte Konstruktoren (ebenfalls public). Der eine soll einen int, der andere einen booleanArray (mit einer gültigen Zweierkomplementzahl im oben beschriebenen Format) übergeben bekommen. • Die public-Methode addiere, welche zwei Objekte vom Typ ZKZahl entgegennimmt und die Summe der beiden Zahlen als ZKZahl-Objekt zurückgibt. Setzen Sie die Addition mit Hilfe des boolean-Arrays und den Ihnen bekannten booleschen Operatoren um. Verwenden Sie ein Checkbit, um zu prüfen ob ein Über- bzw. Unterlauf stattgefunden hat und geben Sie, falls nötig, eine entsprechende Warnung aus. • Die private-Methode wechselVorzeichen(), welche nur das Vorzeichen der Zahl (nicht aber deren Betrag) ändert. • Testen Sie Ihre Implementierung mit der Klasse Taschenrechner.java aus den Vorgaben. • Beispielausgabe: ********************************************************* ********* Teilfunktionsfaehiger Taschenrechner **********

weitere Informationen unter https://isis.tu-berlin.de/course/view.php?id=14110

2

InfTech

WS 2018/19

Übungsblatt 11 (Block 3)

********************************************************* Bitte geben Sie die erste Dezimalzahl ein: 3 Bitte geben Sie die zweite Dezimalzahl ein: 4 Umwandlung der Zahlen von Dezimal- in Zweierkomplementdarstellung Bitte geben Sie an, welche Operation Sie durchfuehren wollen (+/-): [00000000000000000000000000000011]_(ZK) (dezimal: 3) -[00000000000000000000000000000100]_(ZK) (dezimal: 4) =[11111111111111111111111111111111]_(ZK) (dezimal: -1) 1 public class ZKZahl { 2 private boolean[] zk; 3 4 // Konstruktoren 5 6 public ZKZahl(int integerNumber) { 7 // TODO 8 } 9 10 public ZKZahl(boolean[] zk) { 11 // TODO 12 } 13 // Methoden 14 15 // Wechselt das Vorzeichen der Zahl 16 17 private void wechselVorzeichen() { 18 // TODO 19 } 20 21 public String toString() { 22 String resString = ""; 23 for(int i = zk.length−1; i>=0; i−−) { 24 if(zk[i]) { 25 resString += "1"; 26 } else { 27 resString +="0"; 28 } 29 } return resString; 30 31 } 32 33 // Addiert zwei ZKZahlen und gibt das Ergebnis in Form eines neu erzeugten ZKZahl−Objektes zurueck 34 public ZKZahl addiere(ZKZahl zk1, ZKZahl zk2) { 35 // TODO 36 } 37 38 // Subtrahiert (unter Verwendung der obigen Additions−Methode) eine ZKZahl von einer anderen und gibt das Ergebnis als ZKZahl zurueck 39 public ZKZahl subtrahiere(ZKZahl zk1, ZKZahl zk2) { 40 zk2 = new ZKZahl(zk2.getBoolArrayZK()); 41 zk2.wechselVorzeichen(); 42 return addiere(zk1,zk2); 43 } 44 // Hilfsmethode zur Umwandlung eines (eine ZK−Zahl repraesentierenden) 45

weitere Informationen unter https://isis.tu-berlin.de/course/view.php?id=14110

3

InfTech

WS 2018/19

Übungsblatt 11 (Block 3)

boolean−Arrays zu einem int−Wert public int boolArrayZKToInt(boolean[] zk) { int result = 0; for(int i = 0; i...


Similar Free PDFs