Zahlensysteme

Darstellung von Zahlenwerten mit Zeichen

Ein Zahlensystem liefert die Regeln zur Darstellung von Zahlen. Zur Demonstration des Themas ein Zähler in den vier für die Informatik maßgebenden Zahlensystemen.
BinärOctalDezimalHexadezimal
0
0
0
0
Standards Standards Chancen ohne Monopole !
Zahlensysteme Verschiedene historisch oder technisch wichtige Zahlensysteme
Stellenwert-Systeme Binär, Octal, Dezimal, Hexadezimal, ...
Exponential-Format Trennung in Mantisse und Exponent
Vorzeichen Darstellung negativer ganzer Zahlen im 2er-Komplement
Verweis-Tabellen Bezeichnung beliebiger Objekte durch BitMuster
IEEE-754 Standard-Format für Gleitkomma-Zahlen
Programmierung Zahlensysteme in Programmiersprachen

Zahlensysteme

Dezimalsystem:

Zahlen werden heute für den menschlichen Gebrauch allgemein im 'Dezimalsystem' dargestellt:
Dazu werden 10 verschiedene Zeichen ('Ziffern') verwendet, die je nach ihrer Position ('Stellenwert') unterschiedlichen Zahlenwerten entsprechen. Das Dezimalsystem ist ein Stellenwert-System mit den 10 Ziffern 0..9,   zuzüglich Dezimal-Komma und Vorzeichen.

Die Verwendung des Dezimalsystem ist keineswegs selbstverständlich. Im Laufe der Geschichte wurden mehrheitlich andere Zahlensysteme verwendet.
Unser heutiges Dezimalsystem stammt aus Indien und gelangte über Persien nach Europa. Es wurde von der französischen Revolution besonders gefördert.
Dezimalzahlen werden in der Informatik manchmal mit einem nachgestellten Punkt bezeichnet, um sie von anderen Zahlensystemen zu unterscheiden, z.B. 123. oder 456.

Römisches Zahlen-System:

Ein anderes bekanntes System ist z.B. das Römische:
Die verwendeten Ziffern (z.B. M,D,C,L,X,V,I ) werden addiert. Das ist wesentlich einfacher und anschaulicher als mit komplizierten Stellenwert-Systemen.
Es gibt zwar einige Regeln, man kann diese jedoch zur radikalen Vereinfachung auch weglassen: Die Ziffern werden nach abnehmenden Werten sortiert, und sie werden subtrahiert statt addiert, wenn sie nicht in dieser Reihenfolge stehen. (Wikipedia: Römische Zahlen).

Wenn man die Bedeutung der Symbole kennt, dann erfasst man mit einem Blick die Größe der dargestellten Zahl. Ähnlich funktioniert z.B. auch das System der Chips beim Roulette: Man erfasst den Wert nach Anzahl und Größe der Symbole, unabhängig von ihrer Anordnung. Solche einfachen Zahlensysteme brauchen (und kennen) auch keine Null.

Das Römische Zahlensystem wurde in Europa bis ins 15. Jahrhundert verwendet - weit länger als das Dezimalsystem !
Für Uhren und Kapitel-Nummerierung (Textverarbeitung) wird es noch heute gelegentlich eingesetzt.

Der größte Nachteil wiegt heute allerdings schwer: Das Rechnen mit solchen Systemen ist wesentlich komplizierter als mit einem Stellenwert-System. Besonders schwierig ist die Darstellung von Brüchen (Gleitkomma-Zahlen).

Duodezimal-System und Sexagesimalsystem:

Über Jahrtausende wurden in vielen Kulturen (z.B. Babylonien) Zahlensysteme mit der Basis 12 bzw. 60 verwendet. Die Basis 12 ist durch 2,3,4 und 6 restlos teilbar, was sehr praktisch ist. Bis heute haben sich einige Bezeichnungen aus diesem System erhalten:
Dutzend = 1*12; Schock = 5*12=60; Gros = 12*12=144
Bis ins 19. Jahrhundert waren in Europa Maße im 12er-System üblich. Sie wurden durch neue Maße im Dezimalsystem ersetzt - nicht unbedingt wegen Mängel des 12er-Systems, sondern weil davor für jedes der alten Maße unzählige regionale Varianten verwendet wurden.

Die Jahres-Monate, unser Zeit-System und die Winkel-Einteilung in 360° sind Bereiche, wo sich das 12er-System bis heute erfolgreich gehalten hat.

Im US-Bereich (und in den von den USA dominierten technischen und wirtschaftlichen Bereichen) halten sich noch einige Maße im 12er-System, z.B. Zoll (Inch). In Luftfahrt und Schiffahrt wird die Entfernung in Meilen und die Höhe in Fuß gemessen, am Ölmarkt das Volumen in Fass, in der PC-Hardware die Länge in Zoll, usw.

Binär-System:

In der Computer-Technik wird heute allgemein das Binärsystem auf Basis der Zahl 2 verwendet. Wie alle heute in der IT verwendeten Zahlensysteme ist es ein Stellenwert-System.
Es gibt Hinweise auf erste duale (binäre) Systeme in Indien und China, sowie auf Gedanken-Modelle in Europa, die jedoch keine praktische Bedeutung erlangten.

Das Binär-System wurde durch Gottfried Wilhelm Leibniz (1646-1716, Bild:Wikipedia) erstmals umfassend beschrieben.
Die Beschränkung auf die beiden Ziffern 0 und 1 hat der Digital-Technik zu einem ungeahnten Aufschwung verholfen.
Leibniz hatte neben seinen mathematischen auch philosophische Interessen. Er empfand das Binär-System (Dyadik) als besonders perfekt und harmonisch.
Das → Binärsystem (Dual-System) ist für die Computertechnik nicht selbstverständlich, sondern eine Folge der heutigen Elektronik, die binäre Schaltungen schnell, sicher und billig realisieren kann.

Der erste brauchbare Computer dieses Systems wurde von Konrad Zuse (1910-1995, Bild rechts oben:Wikipedia) mit elektromechanischen Relais entwickelt, der erste Computer mit Halbleitern (Transistoren) das legendäre Mailüfterl von Heinz Zemanek (1920, Bild rechts unten:Wikipedia) aus Wien.

Es ist durchaus möglich, Computer auch mit anderen Zahlensystemen zu bauen, wenn es dafür eine technische Basis gibt: Kleine, schnelle, wenig Energie verbrauchende und billig herstellbare Schalt-Elemente mit 3, 4 oder mehr stabilen Zuständen.

Octal-System:

Dieses System wurde eingesetzt, um die Zahlen des Binär-Systems für Menschen anschaulich zu machen.
Je 3 binäre Ziffern (binary digit, Bit) werden zu einer Octal-Ziffer zusammengefasst. Dieses (Stellenwert)-System verwendet die Ziffern 0..7. Die Zahl 8. (dezimal) wird mit 010 bezeichnet.

Octalzahlen werden meist mit einer vorangestellten Null bezeichnet, z.B. 077 = 63. Das kann bei Dezimalzahlen mit 'führenden Nullen' zu Irrtümern führen, z.B. bei der Interpretation von → Datum und Uhrzeit.
Octalzahlen werden nur mehr selten verwendet, z.B. zur Kennzeichnung der Datei-Zugriffsrechte auf Linux.

Hexadezimalsystem:

Ebenfalls mit dem Ziel, Zahlen des Binärsystems für Menschen anschaulich zu machen, wird in der heutigen Informatik meist dieses System mit Basis 16. (dezimal) eingesetzt.
Je 4 Bit werden zu einer Hex-Ziffer (Nibble) zusammengefasst.

Als Symbole der 16 benötigten Zeichen werden die 10 dezimalen Ziffern 0..9 eingesetzt, zusätzlich die Zeichen A..F für die dezimalen Werte 10..15.

Meist werden je 2 Hex-Ziffern paarweise zu Bytes zusammengefasst.
1 Byte wird daher entweder durch eine Dezimalzahl 0..255 oder durch eine Hex-Zahl 00..FF dargestellt.

Hexadezimalzahlen werden manchmal durch vorangestellte Zeichen (Prefix) 0x oder \x oder # bezeichnet, z.B. 0xFF für die Dezimalzahl 255.

256er-System

In der Netzwerk-Technik wird zur Formulierung von → IPv4-Adressen meistens das 256er-System verwendet.
Eine IP-Adresse wird meistens in dieser Form angegeben
192.168.0.123
Damit werden 4 'Ziffern' im 256er-System angegeben. Allerdings verwendet man für die Ziffern nicht 256 verschiedene Symbole, sondern stellt jede 256er-Ziffer durch eine Dezimalzahl im Bereich 0..255 dar.
Der Wert der im Beispiel verwendeten Zahl beträgt
192*256^3 + 168*256^2 + 0*256^1 + 123*256^0 = 3232235643

Alternativ lässt sich die gleiche Zahl dezimal oder hexadezimal darstellen und in manchen Fällen sogar an Stelle der klassisch formulierten IP-Adresse verwenden:
dezimal 3232235643 = hexadezimal C0A8007B

Details zu IPv4 Netzwerk-Adressen

Stellenwert-Systeme

In einem derartigen Zahlensystem wird der Zahlenwert sowohl durch die verwendeten Zeichen (Ziffern) als auch durch deren Position (Stellenwert) bestimmt.

Basis

Die Basis b jedes Stellenwert-Systems entspricht der Anzahl verwendeter Ziffern.
Jedes Stellenwert-System muss eine Ziffer Null enthalten - Das ist nicht selbstverständlich, sondern Ergebnis einer langen Entwicklung der Mathematik.
Jede Ziffer wird mit ihrem Stellenwert multipliziert, danach werden alle Zahlenwerte addiert.

Beispiel dezimal 12 aus den Ziffern 1 und 2:
Ziffer 1 besitzt den Stellenwert 10 (dezimal) und ergibt daher den Zahlenwert 10.
Ziffer 2 besitzt den Stellenwert 1 und ergibt daher den Zahlenwert 2.
Die Zahlenwerte aller Ziffern werden addiert, das ergibt 10+2=12 (dezimal).
SystemBasisZiffern
bin20..1
oct80..7
dec100..9
hex160..F
IPv4 2560..255

Das → IPv4-System der Netzwerk-Technik verwendet immer 4 Stellen. Die 256 Zeichen dieses Systems werden nicht durch Ziffern und Buchstaben sondern durch die Dezimalzahlen 0..255 dargestellt.

Stellenwert

Jede Ziffer wird mit ihrem Stellenwert multipliziert, danach werden die erhaltenen Zahlenwerte addiert. Der Stellenwert nimmt von rechts nach links zu und entspricht der Basis mit steigendem Exponenten.
Der Stellenwert der 'nullten' Ziffer ('Einer') ist stets Null. Jede Basis b0=1, daher steht jede Ziffer der nullten Stelle 'für sich selbst'.
Für jede Stelle weiter links wird der Stellenwert mit der Basis multipliziert, daher ist der Stellenwert der n-ten Stelle bn.
Die Anzahl benötigter Stellen für eine Zahl z beträgt
n = ln(z) / ln(b)
Das Ergebnis n muss man auf die nächste ganze Zahl aufrunden, z.B.
n = int( ln(z) / ln(b) + 0.5 )
Stellenwert positiver ganzer Zahlen in Systemen mit unterschiedlicher Basis:
System← Stellenwert
bin 23=822=4 21=220=1
oct 83=51282=64 81=880=1
dec 103=1000102=100 101=10100=1
hex 163=4096162=256 161=16160=1
IPv4 2563=1.68E072562=65536 2561=2562560=1
Rationale Zahlen (Gleitkomma, float) benötigen auch Stellenwerte <1. Diese Stellen werden nach dem gleichen System berechnet und rechts von der 'Einer'-Stelle angeordnet, die mit einem zusätzlichen Zeichen bezeichnet wird:
Als Dezimal-Komma ist weltweit der Punkt üblich, nur im deutschen Sprachraum wird ein Beistrich verwendet. Das führt in der IT zu zahlreichen Fehlern und macht deutsche Software unnötig teuer.
Beispiele:
Dezimalzahl 12.3 = 1*101 + 2*100 + 3*10-1
Binärzahl 10.1 = dezimal 1*21 + 0*20 + 1*2-1 = 2.5
Stellenwert von Nachkomma-Stellen in Systemen mit unterschiedlicher Basis:
Beachten sie die von links nach rechts abnehmenden Exponenten !
SystemStellenwert →
bin 21=220=1 2-1=1/22-2=1/4
oct 81=880=1 8-1=1/88-2=1/64
dec 101=10100=1 10-1=1/1010-2=1/100
hex 161=16160=1 16-1=1/1616-2=1/256

Fehler

Nur wenige Zahlen lassen sich auf diese Weise 'fehlerfrei' darstellen:
Beispiel: Die Bruchzahl 1/3 würde sowohl im Binärsystem als auch im Dezimalsystem unendlich viele Nachkomma-Stellen zur genauen Darstellung benötigen: 0.33333...

Der maximale Fehler von Gleitkomma-Zahlen liegt bei +/- 1 der letzten angeschriebenen Stelle. Wenn diese Stelle gerundet wird, dann beträgt der maximale Fehler +/- 1/2 der letzten Stelle.
Unmabhängig davon ist der durchschnittliche Fehler halb so groß wie der maximale Fehler.

Die Fehler von Stellenwert-Systemen sind stets relativ zum angegebenen Wert:
Kalkulations-Programme (OpenOffice Calc, MS-Excel, ...) rechnen typisch auf ca. 16 Dezimalstellen (52+1 Bit) genau.
Beispiel: In einem derartigen Programm kann man die beiden Zahlen 1E16 und (1E16 + 1) nicht voneinander unterscheiden: Eine Subtraktion der beiden Zahlen ergibt nicht =1 sondern =0

Moderne Programmiersprachen (z.B. → Perl) bieten spezielle Module zum Rechnen mit fast beliebiger Genauigkeit, allerdings auf Kosten sehr geringer Geschwindigkeit.

Exponential-Format

Zur Darstellung von Gleitkomma-Zahlen wird in der heutigen Informatik das Exponential-Format verwendet.

Dazu wird eine Zahl in 2 Teile getrennt:
Die Mantisse gibt einen Zahlenwert an (meist im Bereich 0..1 oder 1..10) als Gleitkomma-Zahl an.
Der Exponent gibt an, um wieviele Stellen die Mantisse zu verschieben ist, und ist immer eine ganze Zahl.
Zur Kennzeichnung des Exponenten wird bei Dezimalzahlen das Zeichen E oder e verwendet.
Sowohl Mantisse als auch Exponent können ein Vorzeichen tragen.

Diese Art der Darstellung wird in vielen Programmen (Kalkulation) als 'wissenschaftliches' Zahlenformat bezeichnet. Man kann es in vielen Programmen und Programmiersprachen auch zur Eingabe bzw. Zuweisung von Zahlenwerten verwenden.

Beispiele:
1.234E12 = 1.234 * 1012 = 1234000000000
-1.234E-12 = -1.234 * 10-12 = -0.000000000001234
Die Zerlegung einer Zahl in Mantisse und Exponent hat große Bedeutung in der Informatik: → Gleitkomma-Zahlen werden intern immer in dieser Form dargestellt:
Eine typische Gleitkomma-Zahl (Typ 'Double') wird in 8 Byte = 64 Bit gespeichert. Davon entfallen 53 Bit auf die binäre Mantisse und 11 Bit auf den binären Exponenten, davon wiederum je 1 Bit für das Vorzeichen.
Die Aufteilung des verwendeten Speicherplatzes ist willkürlich und als Praxis-freundlicher Kompromiss zu verstehen:

Je mehr Bit für den Exponenten verwendet werden, desto größer der (absolut) darstellbare Zahlenbereich.

Je mehr Bit für die Mantisse verwendet werden, desto genauer die Darstellung (d.h. kleinere relative Fehler).

Je mehr Bit insgesamt verwendet werden, desto mehr Speicherplatz wird pro Zahl verbraucht, und desto mehr Zeit braucht der Transport der Zahlen sowie jede einzelne Rechnung damit. Insbesondere mathematische Funktionen (→ Wurzel, → Logarithmus, → Winkelfunktionen, ...) brauchen typisch sehr viel mehr Zeit zum Rechnen mit sehr großen oder sehr genauen Zahlen.

Details dazu im Kapitel Gleitkomma (IEEE-754).

Genauigkeit:

Der durchschnittliche Fehler bei der Darstellung von Gleitkomma-Zahlen hängt von der Anzahl der für die Mantisse verwendeten Ziffern ab.
Die Angabe 'auf 3 Ziffern genau' beschreibt daher im Dezimalsystem einen durchschnittlichen relativen Fehler von 10-3 = 0.001 = 0.1%
Dieser Fehler ist relativ, d.h. proportional zur jeweiligen Zahl. Bei Zahlenwerten von ca. 1000 bedeutet eine Genauigkeit von 3 Stellen einen durchschnittlichen Fehler von 10, oder (wenn die letzte Stelle gerundet wird) von 5.
Typische Gleitkomma-Zahlen von PC-Programmen (Typ 'Double') bieten mit einer Mantisse von 52 Bit eine Genauigkeit von ca. 15-16 Dezimalstellen.

Werte-Bereich

Der Exponent gibt an, um wieviele Stellen die Mantisse nach rechts oder links verschoben wird. Damit wird daher der Werte-Bereich (kleinste und größte darstellbare Zahl) begrenzt. Eine Verschiebung um 1 Stelle bedeutet im Binär-System die Halbierung bzw. Verdoppelung des Zahlenwerts.

Typische Gleitkomma-Zahlen von PC-Programmen (Typ 'Double') bieten mit einem Exponenten von 10 Bit + 1 Vorzeichen-Bit einen Werte-Bereich von ca. 1E-308 bis 1E+308

Interne Daten-Formate der Informatik:

Der kaum mehr verwendete Variablen-Typ Single verwendet für die Mantisse 23+1 Bit, der derzeit meist-verwendete Typ Double 52+1 Bit und der vorläufig noch selten verwendete Typ Quad 112+1 Bit.
Das ergibt bei Rundung der letzten Stelle mittlere relative Fehler von ca. 6E-8 (Single) bzw. 1E-16 (Double) und 1E-34 (Quad). Das entspricht einer Genauigkeit von ca. 7 (16, 34) Dezimal-Stellen.

In den meisten Anwendungs-Programmen (z.B. Kalkulation) wird ungefragt die Type 'Double' verwendet.
In Low-Level Programmiersprachen (z.B. C/C++) muss man den Typ normalerweise festlegen.
Moderne Programmiersprachen bieten oft eine Kombination, d.h. manuelle Auswahl oder automatische Verwendung von 'Double'.
Rechnungen sollten so ausgeführt werden, dass die Genuigkeit möglichst erhalten bleibt. Besonders zu vermeiden ist die Berechnung kleiner Differenzen von großen Zahlen. Praktische Rechen-Verfahren (Algorithmen) in der IT folgen daher nur selten 'eleganten' Formeln, sondern meist der maximalen Genauigkeit oder Geschwindigkeit.

Beispiel:
Die Dezimalzahl 1 Million wird im Typ 'Single' auf ca. 7 Stellen genau gespeichert. Bei Abzug der etwa gleich großen Zahl 999999 ist vom Ergebnis 1.0 bereits die 2. Stelle unsicher !
Jede weitere mit dieser Differenz ausgeführte Rechnung ist nur mehr auf maximal 1-2 Stellen genau, und zwar auch dann, wenn man in der Ausgabe 15 oder mehr Stellen anführt !

Details zu Gleitkomma-Zahlen (IEEE-754), Reihen-Algorithmen.

Wikipedia: IEEE-764, Single, Double, Quad
High Precision Software Directory (C++, Fortran)

Vorzeichen

Die Verwendung negativer Zahlen ist eine relativ späte kulturelle Errungenschaft, sie ist bei Naturvölkern unbekannt. Mit den negative Zahlen wird die Menge der natürlichen positiven Zahlen verdoppelt: Die Zahlen-Gerade (von Null bis +∞) wird bis -∞ verlängert.
Die Verdoppelung erfordert einen zusätzlichen Speicherplatz von 1 Bit. Dieses spezielle Bit ist das Vorzeichen-Bit (normalerweise das höchstwertige Bit = MSB = das Bit 'ganz links').

Die meisten Datenbanken und Programmiersprachen bieten unterschiedliche Variable der Typen signed und unsigned
Das bedeutet in der Praxis: signed-Variable enthalten ein Vorzeichen. unsigned-Variable enthalten kein Vorzeichen (nur positive Zahlen) und können dafür doppelt so große absolute Werte annehmen.

Beispiel:
Ein Typ unsigned benötigt 8 Bit, davon werden alle für den Zahlenwert verwendet. Das ergibt einen Werte-Bereich 0..+255 (dezimal).
Ein Typ signed benötigt 8 Bit. Davon wird 1 Bit für das Vorzeichen verwendet, für den Zahlenwert bleiben 7 Bit. Das ergibt einen Werte-Bereich -128..+127 (dezimal).
Das gleiche Bitmuster (z.B. einer Speicher-Zelle) kann daher unterschiedlich gedeutet werden, je nach dem vereinbarten Typ !
In der Praxis kommen dazu noch weitere Möglichkeiten der Interpretation, z.B. als → Zeichen (Buchstabe).
Die meisten praktisch verwendeten Typen verwenden >1 Byte. Für ganze Zahlen ändert sich das Beispiel nur wenig: signed Zahlen werden links mit 0-Bits aufgefüllt, unsigned positive Zahlen ebenfalls mit 0-Bits, negative mit 1-Bits.

2er-Komplement

In der Praxis werden negative ganze Zahlen intern nach einem speziellen Algorithmus dargestellt, welcher auf Prozessor-Ebene besonders rasches Rechnen erlaubt.

Beispiele: Das gleiche Bit-Muster (bin) einer Speicher-Zelle hat unterschiedliche Bedeutung, je nach dem vereinbarten Typ:
binunsignedsigned
0000000000
0000000111
0000001022
0000001133
0000010044
...
01111110126126
01111111127127
10000000128-128
10000001129-127
...
11111100252-4
11111101253-3
11111110254-2
11111111255-1

Details und Live-Demo zum 2er-Komplement

Verweis-Tabellen

Mit einer Verweis-Tabelle (Lookup Table LUT) kann man die Bedeutung eines Bitmusters bzw. einer Zahl auf andere Bereiche übertragen, z.B. auf Zeichen (Buchstaben), Farben, Töne, usw.

Ein Bitmuster (=der Inhalt eines Bytes im Speicher oder in einer Datei) ergibt noch keine brauchbare Information. Man braucht eine Vereinbarung, wie das Muster zu interpretieren ist: Erst durch Angabe des Daten-Typs werden aus Bits Daten.

Beispiel Buchstaben:
Das Muster (Byte) 01000001 kann je nach Typ die ganze Dezimalzahl 65.0 oder den Buchstaben A angeben. Die Verwendung (Vereinbarung) einer anderen Verweis-Tabelle kann einen anderen Sinn ergeben, z.B. mit der → EBCDIC-Tabelle das Zeichen x

Beispiel Farben:
Das verbreitete Grafik-Format GIF enthält in jeder Datei eine Verweis-Tabelle (Color lookup table CLUT). In jeder Zeile dieser Tabelle wird (vereinfacht) eine Farbe (24 Bit) mit einem Bitmuster (8 Bit) verknüpft.
Danach folgen die Bild-Daten: Jeder Bildpunkt (Pixel) wird durch 1 Byte angegeben. Wenn man das Bitmuster eines Pixels in der Verweis-Tabelle aufsucht, erhält man dessen Farbe. Das System spart auf diese Weise 16 Bit pro Pixel, muss dafür jedoch eine CLUT-Tabelle zusätzlich speichern.
Details zu Index-Farben
Beispiel: Die Verweis-Tabelle des → ASCII-Codes verknüpft mit jedem in der linken Spalte angegebenen Bit-Muster (bin) ein Zeichen (char: Buchstaben, Ziffern, Interpunktionen, usw...)
binunsignedchar
00110000480
00110001491
00111000568
00111001579
...
0100000165A
0100001066B
0101100189Y
0101101090Z
...
0110000197a
0110001098b
01111001121y
01111010122z

Alle Programmiersprachen bieten Funktionen zur Verwendung der jeweils vereinbarten (Zeichen)-Verweis-Tabelle.
Beispiel Kalkulations-Programme (OpenOffice, LibreOffice, MS-Excel, ...):
Diese Formel erzeugt aus einer ganzen Zahl ein Zeichen: =ZEICHEN(65)
Diese Formel ergibt aus einem Zeichen dessen (ASCII-Code)-Zahl: =CODE("A");

Ziffern

Das Muster (Byte) 00110101 kann je nach Typ die ganze Dezimalzahl 53.0 oder im → ASCII-Code die Ziffer (Zeichen, character) '5' angeben.
Damit kann man prinzipiell nicht sinnvoll rechnen, weil damit das druckbare Zeichen '5' und nicht die Zahl 5 gemeint ist. Das Zeichen '5' kann u.a. je nach dem vereinbarten Zahlensystem einen anderen Wert ergeben, z.B. 5*8 oder 5*10 oder 5*16

Klassische Programmiersprachen (z.B. C/C++) erzwingen die genaue Angabe des Typs aller verwendeten Variablen. Eine Typ-Umwandlung ist möglich, jedoch nur auf ausdrückliche Anweisung und nach genau festgelegten Regeln.
In der Programmiersprache → C/C++ kann man mit dem Typ char sogar rechnen: Addition von +1 ergibt das nächste Zeichen der → ASCII Verweis-Tabelle, Addition von +32 zu Großbuchstaben ergibt Kleinbuchstaben, usw.

Moderne Programmiersprachen wechseln bei Bedarf den Typ. Wenn ein String (Text, Zeichenkette) nur Ziffern enthält, dann kann man damit sogar rechnen: Das Programm erkennt den Bedarf und wandelt den Typ automatisch und ungefragt (!) um.
Beispiel: Wenn man einen Text (String) an eine Variable zuweist, dann kann man durch Addition der Zahl 0 die Umwandlung in eine Zahl erzwingen, z.B. in → Perl oder → PHP:
$x = "123";
$x = $x + 0;
Das ist bequem, kann jedoch Fehler verursachen, wenn die Umwandlung nicht sinnvoll ist, oder unter bestimmten Bedingungen (z.B. führende 0-Ziffern) falsche Ergebnisse liefert. Bei Verwendung 'bequemer' Programmiersprachen sollte man dieses Verhalten kennen und notfalls beeinflussen bzw. verhindern.
Beispiel: Außerirdische Intelligenz
Es ist (abgesehen von Zeit und Energie) kein prinzipielles Problem, Daten auch über astronomische Entfernungen zu übertragen. Es wäre jedoch sehr schwierig, den Sinn der Daten zu erfassen, da es (ausgenommen in Hollywood-Filmen) keine gemeinsamen Vereinbarungen darüber gibt, wie die Daten zu interpretieren sind.
Beispiel Projekt SETI: Man verwendet einen enormen Aufwand an Rechenleistung, nur um herauszufinden, ob in den zahlreichen empfangenen Signalen überhaupt sinnvolle Daten enthalten sein könnten.

Beispiel Verschlüsselung:
Man geht davon aus, dass gespeicherte oder transportierte 'Daten' von feindseligen Personen oder Organisationen gelesen werden: Wenn das System funktioniert, dann sind die illegal abgehörten Bitmuster wertlos, weil man die zur Interpretation notwendige Vereinbarung nicht kennt.

Standards

Im Laufe der Zeit sind viele unterschiedliche Typen = Vereinbarungen zur Interpretation von Bitmustern entstanden.
Es ist sehr im Sinne der AnwenderInnen, dass es möglichst wenige, jedoch global eindeutige Daten-Typen gibt, die von allen einschlägigen Programmen unterstützt werden, und die lizenzfrei verwendet werden können.
In diesem Web werden solche (globale offene) Standards unterstützt und nach Möglichkeit bevorzugt.
Es ist in unserer derzeitigen Gesellschaft legitim, dass große Unternehmen genau die gegenteilige Strategie verfolgen: Firmen-eigene und durch Lizenzen geschützte Normen kann man (nur dann) gewinnbringend nutzen, wenn man über die Macht verfügt, sie am Markt durchzusetzen.
Für kleine Unternehmen sind Standards jedoch lebenswichtig, da sie nur damit ihre Produkte an einen komplexen Markt anschließen können. Die reale Standard- und Patent-Politik z.B. der USA oder der EU ist daher wirtschaftlich sehr wirksam und alles andere als ein Zufall...

XHTML CSS