kramann.info
© Guido Kramann

Login: Passwort:










Archiv
2 SoSe2022
..2.1 MIK
..2.2 SRT
..2.3 HDL
..2.4 AUT
..2.5 SLE
2 WS2020_21
..2.1 RTS
....2.1.1 day_by_day
..2.2 IE
....2.2.1 day_by_day
..2.3 ES
..2.4 EFSEE
....2.4.1 day_by_day
..2.5 KF
....2.5.1 day_by_day
....2.5.2 Haikus
....2.5.3 Haikus_en
..2.6 CC
....2.6.1 day_by_day
2 WS2021_22
..2.1 RTS
....2.1.1 day_by_day
....2.1.2 Versuch002
....2.1.3 Versuch003
....2.1.4 Versuch004
....2.1.5 Versuch005
....2.1.99 Material
..2.2 FTS
....2.2.1 day_by_day
..2.3 ESY
....2.3.1 day_by_day
..2.4 INFmecha5
....2.4.1 day_by_day
..2.5 REGmecha5
....2.5.1 day_by_day
2 WS2023_24
..2.1 day_by_day_RST
..2.2 day_by_day_SRT
..2.3 day_by_day_FTS
..2.4 day_by_day_KF
3 SoSe2021
..3.1 STR
....3.1.1 day_by_day
..3.2 SLE
....3.2.1 day_by_day
..3.3 HDL
....3.3.1 day_by_day
..3.4 MIK
....3.4.1 day_by_day
3 SoSe2024
..3.1 Mik_21_03_2024
..3.2 Mik_04_04_2024
..3.3 Mik_11_04_2024
..3.4 Mik_18_04_2024
..3.5 Mik_25_04_2024
..3.6 Mik_02_05_2024
..3.7 Mik_16_06_2024
..3.8 Mik_23_05_2024
..3.9 Mik_30_05_2024
..3.10 Mik_05_06_2024
..3.11 Mik_13_06_2024
3 WS2022_23
..3.1 day_by_day_RST_3MB
..3.2 day_by_day_RT2_5MT
..3.3 day_by_day_EMB_7MT
..3.4 day_by_day_ABP_7MT
..3.5 day_by_day_FTS_MMB
..3.6 day_by_day_KF
4 SoSe2023
..4.2 RTS_day_by_day
..4.3 MIK_day_by_day
..4.4 AUT_day_by_day
..4.5 HDL_day_by_day
4 WS2024_25
..4.1 ING_day_by_day
....4.1.1 ING_Do_26_09_2024
....4.1.2 ING_Do_10_10_2024
....4.1.3 ING_Do_17_10_2024
....4.1.4 ING_Do_24_10_2024
....4.1.5 ING_Do_07_11_2024
....4.1.6 ING_Do_14_11_2024
....4.1.7 ING_Do_21_11_2024
....4.1.8 ING_Do_28_11_2024
....4.1.9 ING_Do_05_12_2024
....4.1.10 ING_Do_12_12_2024
....4.1.11 ING_Do_19_12_2024
..4.2 INF_day_by_day
....4.2.1 INF_Fr_27_09_2024
....4.2.2 INF_Fr_04_10_2024
....4.2.3 INF_FR_18_10_2024
....4.2.4 INF_Fr_25_10_2024
....4.2.5 INF_Fr_08_11_2024
....4.2.6 INF_Fr_15_11_2024
....4.2.7 INF_Fr_22_11_2024
....4.2.8 INF_Fr_29_11_2024
....4.2.9 INF_Fr_06_12_2024
....4.2.10 INF_Fr_13_12_2024
....4.2.11 INF_Fr_20_12_2024
....4.2.12 INF_Fr_10_01_2025
..4.3 FTS_day_by_day
....4.3.1 FTS_Mi_25_09_2024
....4.3.2 FTS_Mi_02_10_2024
....4.3.3 FTS_Mi_09_10_2024
....4.3.4 FTS_Mi_16_10_2024
....4.3.5 FTS_Mi_23_10_2024
....4.3.6 FTS_Mi_30_10_2024
....4.3.7 FTS_Mi_06_11_2024
....4.3.8 FTS_Mi_13_11_2024
....4.3.9 FTS_Mi_20_11_2024
....4.3.10 FTS_Mi_27_11_2024
....4.3.11 FTS_Mi_04_12_2024
....4.3.12 FTS_Mi_11_12_2024
....4.3.13 FTS_Mi_18_12_2024
6 Ing
..6.1 Bauplan
....6.1.1 Bootstick
....6.1.2 Xubuntu
....6.1.3 Webserver
....6.1.4 Hotspot
....6.1.5 Videostream
....6.1.6 Lampe
....6.1.7 Chassis
....6.1.8 Akku
....6.1.9 Motore
....6.1.10 Laborsteckboard
....6.1.11 Antriebstest
7 007
..7.1 Einschalten
..7.2 Vorversuche
kramann.info
© Guido Kramann

Login: Passwort:




Inhalte zur Vorlesungswoche #3, Informatik 1 im Wintersemester 2024/25

(EN google-translate)

(PL google-translate)

Themen

  1. Zahlensysteme (Stellenwertsysteme)
  2. Das Binärsystem
  3. Einer- und Zweierkomplement
  4. Wertebereich des Datentyps char (-128 bis +127)
  5. Addition und Subtraktion im Binärsystem
  6. Hexadezimalzahlen

Material zu der Lehrveranstaltung findet sich auf Moodle.


Ergänzungen

  • Zweierkomplement
  • Das Einerkomplement einer im binären Stellenwertsystem dargestellten Zahl, sprich Binärzahl, erhält man indem man erst jede 1 durch eine 0 und jede 0 durch eine 1 ersetzt.
  • Beim Zweierkomplement wird NACH Bildung des Einerkomplements noch eine 1 zu der entstandenen Zahl addiert. Ein auftretender Überlauf wird dabei nicht berücksichtigt.
  • Negative ganze Binärzahlen werden im Rechner als das Zweierkomplement ihres Betrages repräsentiert.
  • Dies erlaubt eine Subtraktion als Addition ihres Zweierkomplements auszuführen. BEISPIEL:

7-3=4

Binär bei 8 Bit:

7 = 00000111
3 = 00000011

-3 = 11111100 + 1 = 11111101 (Zweierkomplement)

Subtraktion als Addition des Zweierkomplements:

 7
-3

    00000111
   +11111101
(1) 1111111   (Überträge)
   ---------
(1)00000100 = 4



Code 0-1: Beispiel zur praktischen Nutzung des Zweierkomplements für die Subtraktion.

Übungen mit Stift und Papier

Aufgabe 1: Rechnen Sie vom Dezimal- ins Binärsystem um:


  7 = 
 10 = 
127 =
255 =
128 = 
 48 =
 15 = 


Code 0-2: Rechnen Sie vom Dezimal- ins Binärsystem um

Aufgabe 2: Rechnen Sie die 8-Bit-Zahlen (char) ins Dezimalsystem um, ACHTUNG negative Zahlen stehen im Zweierkomplement!


Überlegen Sie genau die Reihenfolge, wie eine negative Binärzahl im Zweierkomplement zurück ins Dezimalsystem gebracht wird.



00001111 = 
11110000 = 
00001010 =
10000000 =
10101010 =
01010101 =


Code 0-3: Rechnen Sie die 8-Bit-Zahlen (char) ins Dezimalsystem um, ACHTUNG negative Zahlen stehen im Zweierkomplement!

Aufgabe 3: Führen Sie folgende Subtraktionen im Binärsystem durch Anwendung des Zweierkomplements aus und überprüfen Sie das Ergebnis durch eine Rücktransformation


10 -  5  = 
10 - 15  = 
64 - 65  = 


Code 0-4: Führen Sie folgende Subtraktionen im Binärsystem durch Anwendung des Zweierkomplements aus und überprüfen Sie das Ergebnis durch eine Rücktransformation

Aufgabe 4: Wandeln Sie folgende Zahlen ins Hexadezimalsystem um.


Dezimalzahlen:
 10 = 
 12 = 
 15 = 
 16 = 
100 =

Binärzahlen (alle positiv zwischen 0 und 255):
11110000 = 
00001111 = 
00001010 =
10101010 =


Code 0-5: Wandeln Sie folgende Zahlen ins Hexadezimalsystem um.

Übungen am PC

Aufgabe 1

Im Unterricht wurde eine Methode zur handschriftlichen Transformation einer im Dezimalsystem dargestellten Zahl ins Binärsystem besprochen.

Nachfolgend finden Sie ein kleines Programm, das diese Umwandlung automatisiert, jedoch die Ziffern in umgekehrter Reihenfolge ausgibt.

Dabei kommt die Modulodivision zum Einsatz, Operator %

Die Modulo-Division wird auch Rest-Division genannt.


Symbol des Modulo-Operators in der Programmiersprache C: %

Beispiele:
4%2=0
5%2=1
6%3=0
8%3=2


Code 0-6: Die Modulo Division

#include <iostream>
using namespace std;
int main(void)
{
    int x = 126;
    cout<<x%2;
    x=x/2;
    cout<<x%2;
    x=x/2;
    cout<<x%2;
    x=x/2;
    cout<<x%2;
    x=x/2;
    cout<<x%2;
    x=x/2;
    cout<<x%2;
    x=x/2;
    cout<<x%2;
    x=x/2;
    cout<<x%2;
    x=x/2;
    cout<<x%2;
    x=x/2;

    return 0;
}

Code 0-7: Einfaches Programm zur Binärdarstellung einer Zahl, wobei die Ziffern in umgekehrter Reihenfolge dargestellt werden.

  • Testen Sie das Programm.
  • Ergänzen Sie eine Eingabeaufforderung, die es ermöglicht beliebige Zahlen zwischen 0 und 127 umzuwandeln und testen es.
  • Suchen Sie in den vergangenen Vorlesungen nach Beispielen, die eine for-Schleife verwenden und versuchen dann die sich wiederholenden Befehle in einer for-Schleife zusammenzufassen.
#include <iostream>
using namespace std;
int main(void)
{
    int x;
    cout<<"Welche Zahl soll in Binär umgewandelt werden?"<<endl;
    cin>>x;
    int y[7];
    if(x >= 0 && x <= 127)
    {
        for(int i = 0; i<=7; i++)
        {
            y[i] = x%2;
            cout<<y[i];
            x=x/2;
        }
       
        cout<<endl<<"Einerkomplement: ";
       
        for(int i = 0; i<=7; i++)
        {
            y[i] = 1 - y[i];
            cout<<y[i];
        }
       
        cout<<endl;
    }

    else
    {
        cout<<"Zahl ist nicht zwischen 0 und 127."<<endl<<"Das Programm wird beendet."<<endl;
    }
    return 0;
}

Code 0-8: Studentische Lösung zu Aufgabe 1.

Aufgabe 2

  • Ausgangspunkt bilden die Ergebnisse aus Aufgabe 1.
  • Schreiben Sie das Programm von Aufgabe 1 so um, dass statt der ursprünglichen Zahl das Einerkomplement gebildet wird und ausgegeben wird.
  • Überlegen Sie sich, welche Schritte nötig wären, um bei Eingabe negativer Zahlen zwischen -1 und -128 auch das Zweierkomplement zu bilden.
  • Versuchen Sie ein entsprechendes Programm umzusetzen.
  • Führen Sie alles bisher Erarbeitete zusammen und schreiben ein Programm, das die 8-Bitmuster von Dezimalzahlen zwischen -128 und +127 in richtiger Reihenfolge ausgibt.