Wir betrachten im folgenden Stellenwertsysteme. Nicht-stellenwertige Zahlensysteme wie römische Zahlen lassen wir aus.
Definition
Ein Stellenwertsystem ist ein Zahlensystem, bei dem der Wert einer Ziffer von ihrer Position innerhalb der Zahl abhängt.
Es gibt unendlich viele Zahlensysteme. Hier ein paar Beispiele.
| Basis | Ziffern | Stellenwerte Potenzschreibweise | Stellenwerte |
|---|---|---|---|
| 10 | 0,1,...,9 | ..., 103, 102, 101, 100 | ..., 1000, 100, 10, 1 |
| 2 | 0,1 | ..., 23, 22, 21, 20 | ..., 8, 4, 2, 1 |
| 3 | 0,1,2 | ... 33, 32, 31, 30 | ..., 27, 9, 3, 1 |
| 8 | 0,1,...,7 | ..., 103, 102, 101, 100 | ..., 512, 64, 8, 1 |
| 16 | 0-9,A,B,C,D,E,F | ..., 163, 162, 161, 160 | ..., 4096, 256, 16, 1 |
Vorgehen:
𝑍=𝑎𝑛⋅𝑏𝑛 + 𝑎𝑛−1⋅𝑏𝑛−1 + … + 𝑎1⋅𝑏1 + 𝑎0⋅𝑏0
Dabei gilt:
- b ... Basis des Zahlsystems
- n ... Anzahl der Stellen -1
- 𝑎𝑛 ... Ziffer des Zahlsystems
Aufgabe
Wandle folgende Zahlen in das Dezimalsystem um.
- (1101)2 = (13)10
- (1111)2 = (15)10
- (10000000)2 = (128)10
- (11111111)2 = (255)10
- (11110111)2 = (247)10
- (2010)3 = (30)10
- (40)5 = (20)10
- (F)16 = (15)10
- (C2)16 = (194)10
def to_dez(zahl: int, basis: int) -> int:
"""
Wandelt eine Zahl aus einem beliebigen Zahlensystem
in eine Dezimalzahl (Basis 10) um.
Beispiel:
to_dez(1011, 2) -> 11
Args:
zahl: Die Zahl im Ausgangszahlensystem.
basis: Die Basis des Ausgangszahlensystems.
Returns:
Die Zahl als Dezimalzahl.
"""
# Variable für die Aufsummierung der Werte
result = 0
# Umwandlung der zahl als string, um sie stellenweise verarbeiten zu können
ziffern = str(zahl)
# Die erste Ziffer hat die höchste Position.
position = len(ziffern) - 1
for ziffer in ziffern:
# Ziffer mit dem entsprechenden Stellenwert multiplizieren. (** ist 'hoch')
result = result + int(ziffer) * basis ** position
position = position - 1
return result
# Testaufrufe
print(to_dez(1,2))
print(to_dez(2,2))
print(to_dez(3,2))
print(to_dez(4,2))
print(to_dez(5,2))
print(to_dez(1101,2))
print(to_dez(123497,10))
Vorgehen:
Beispiel:
(187)10 = (10111011)2
(187)10 = (BB)16

Aufgabe
Wandle folgende Dezimalzahlen in das gegebene Zahlensystem um.
- (100)10 = (...)2
- (161)10 = (...)2
- (65)10 = (...)16
- (17)10 = (...)3
def dez_to(zahl: int, basis: int) -> int:
reste = []
zwischenergebnis = zahl
while zwischenergebnis != 0:
rest = zwischenergebnis % basis
zwischenergebnis = zwischenergebnis // basis
reste.append(rest)
ergebnis = ""
reste.reverse()
for rest in reste:
ergebnis = ergebnis + str(rest)
return int(ergebnis)
print(dez_to(10,2))
print(dez_to(64,2))
print(dez_to(255,2))
Farben können im RGB-Farbmodell angegeben werden.
In der Regel wir ein Byte für jede Grundfarbe verwendet. Damit stehen je Grundfarbe 256 (28) Abstufungen zur Verfügung. Insgesamt lassen sich 23*8 = 224 = 16.777.216 Farben erzeugen.
Die Farben werden für die bessere Lesbarkeit und kürzere Darstellung häufig Hexadezimal angegeben. Probiert es einfach mal aus: https://binarydecimal.com/tools/color-converter