Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
ef_informatik:zahlensysteme [2024-08-27 08:53] – [Zusatzaufgaben] scaef_informatik:zahlensysteme [2024-08-27 12:40] (aktuell) – [Weitere Aufgaben] sps
Zeile 2: Zeile 2:
  
 ++++Lernziele| ++++Lernziele|
 +
 +Grundsätzlich kann alles bis und mit Kapitel "Weitere Aufgaben" geprüft werden. Die folgenden Lernziele dienen als eine Art Checklist, sind aber nicht zwingend komplett:
 +
 +   * Wissen, warum Datentypen wichtig sind in C Sprachen.
 +   * Dynamische und statische Typisierung vergleichen. Vor- und Nachteile?
 +   * Zahlen in wissenschaftlicher Schreibweise darstellen.
 +   * Umwandlung von ganzen Zahlen (ints) dezimal <-> binär
 +   * Binärzahl in Gleitkommadarstellung bringen ...
 +   * ... und zugehörige Fachbegriffe (Mantisse, ...) erklären können.
 +   * Umwandlung von Gleitkommazahlen dezimal <-> binär
 +   * Umwandlung Gleitkommadarstellung in Binärzahl oder Dezimalzahl
 +   * Sonderfälle für binäre Gleitkommazahlen kennen und verstehen.
 +   * Binäre floats addieren können.
 +   * Codes zu den obigen Punkten verfassen können in Python oder C#.
  
 ++++ ++++
 +
 +++++Praktische Python Befehle|
 +
 +<code python>
 +# Length
 +len("laenge von einem String oder Liste ...")
 +
 +# Data types
 +str(42)
 +int("132")
 +float(13)
 +type(42)
 +bin(132)
 +
 +# Strings
 +s = "ich bin ein String"
 +s[2:]
 +s[4:7]
 +s[:5]
 +s.replace('b','B')
 +li = s.split(' ')
 +s.strip("    hallo     ")
 +s.lstrip("    hallo     ")
 +s.rstrip("    hallo     ")
 +s = s.upper()
 +s = s.lower()
 +s.find("bin")
 +many_zeros_string = "0" * 100
 +
 +## TIPP: In diesem Thema bietet es sich meist an, mit Strings anstelle Listen zu arbeiten. Sollte man aber das Bedürfnis nach Listen haben, hier die wichtigsten Befehle:
 +li = ['k','s','r']
 +len(li)
 +li.append('romanshorn')
 +li.pop(2)
 +li.remove('k')
 +print(li)
 +</code>
 +
 +++++
 +
 ===== - Voraussetzungen ===== ===== - Voraussetzungen =====
  
Zeile 286: Zeile 340:
 <nodisp 1> <nodisp 1>
 ++++Lösung| ++++Lösung|
 +
 +<code python>
 +def binary_string_to_float(bin_str,len_exp=5,len_mant=10):
 +    # SIGN
 +    sign = '0'
 +    if bin_str[0] == '-': sign = '1'
 +
 +    # SPECIAL CASE: ZERO
 +    if '1' not in bin_str: return [sign,'0'*len_exp,'0'*len_mant]
 +
 +    # TODO: other special cases (too small, too big, nan)
 +
 +    # if int convert into float
 +    if not '.' in bin_str: bin_str += '.'
 +
 +    # EXPONENT, MANTISSA
 +    bin_str = bin_str.lstrip('-').lstrip('0') # remove unnecessary stuff
 +    bias = (2**len_exp - 2)//2
 +    mantissa = bin_str
 +
 +    # determine exponent
 +    i_one = bin_str.find('1') # index of first '1' from left
 +    i_point = bin_str.find('.') # index of decimal point
 +    exponent = i_point - i_one
 +    if exponent > 0: exponent -= 1
 +
 +    # remove point from mantissa
 +    if '.' in bin_str: mantissa = bin_str[0:i_point] + bin_str[i_point+1::]
 +
 +    # add bias to exponent
 +    exp_w_bias = bin(exponent+bias)[2:]
 +    exp_w_bias = '0' * (len_exp - len(exp_w_bias)) + exp_w_bias
 +    if len(exp_w_bias) > len_exp:
 +        return [sign,'1'*len_exp,'0'*len_mant]
 +    
 +    # normalize mantissa
 +    mantissa = mantissa.lstrip('0')
 +    mantissa_normalized = mantissa[1::] # remove first '1' (i.e. normalize)
 +    # ensure mantissa has correct length
 +    if len(mantissa_normalized) > len_mant:
 +        mantissa_normalized = mantissa_normalized[0:len_mant]
 +    else:
 +        mantissa_normalized += '0' * (len_mant - len(mantissa_normalized))
 +
 +    # TODO: round mantissa correctly
 +    
 +    return [sign,exp_w_bias,mantissa_normalized]
 +</code>
 +
 ++++ ++++
 </nodisp> </nodisp>
Zeile 361: Zeile 464:
  
 ++++Lösung| ++++Lösung|
- 
  
  
Zeile 468: Zeile 570:
    * Exponenten ermitteln    * Exponenten ermitteln
    * Mantissen ermitteln    * Mantissen ermitteln
-   * Exponenten angleichen, Komma der Mantissen entsprechend verschieben. Bias beibehalten+   * Exponenten angleichen, Komma der Mantissen entsprechend verschieben. Bias beibehalten.
    * Addition durchführen    * Addition durchführen
    * Komma verschieben, Exponent angleichen    * Komma verschieben, Exponent angleichen
  • ef_informatik/zahlensysteme.1724748823.txt.gz
  • Zuletzt geändert: 2024-08-27 08:53
  • von sca