funktionale Programmierung Material Motivation Grundlagen Rekursion Listen Funktionen höherer Ordnung list comprehension Generator lazy evaluation Haskell Endrekursion Beispiele
Pfad: Startseite / Fächer / Informatik / funktionale Programmierung / Grundlagen
Autor: mk
08.12.2010 14:41:10
798
Grundlagen

Beispiel: Cäsar-Verschlüsselung

Bild

Asterix: VDOYHFDHVDU

Cäsar: PYLZFOWBNQCYBUVNCBLGYCHYAYBYCGMWBLCZNYHNTCZZYLN

caesar0.py

Strukturen aus Funktionen

Aufgabe

Schreibe und teste folgende Funktionen:

def setBit(b,n):
    """
    gibt das Byte b (byte) mit gesetztem Bit n zurueck,
    byte steht fuer int mit Zahlbereich 0..255 
    """

def clearBit(b,n):
    """
    gibt das Byte b (byte) mit geloeschtem Bit n zurueck,
    byte steht fuer int mit Zahlbereich 0..255 
    """

def testBit(b,n):
    """
    gibt genau dann True zurueck, wenn das Bit n des Bytes b 
    gesetzt ist
    """

bitman.py

BitManipulation - wiki.python.org, Unary arithmetic and bitwise operations - docs.python.org/py3k/reference

Tests

>>> b = int('01000001',2)
>>> a = setBit(b,5)
>>> a
97
>>> bin(a)
'0b1100001'
>>> bin(a)[2:].zfill(8)
'01100001'
>>> c = setBit(a,1)
>>> bin(c)[2:].zfill(8)
'01100011'
>>> 
>>> d = clearBit(c,6)
>>> bin(d)[2:].zfill(8)
'00100011'
>>> testBit(d,0)
True
>>> testBit(d,1)
True
>>> testBit(d,2)
False
>>> testBit(d,3)
False
>>> testBit(d,4)
False
>>> testBit(d,5)
True
>>> testBit(d,6)
False
>>> testBit(d,7)
False

Links