Drei Zahlensysteme - ein kleiner Exkurs

  • Bisher sind im Laufe dieser "Reihe" Zahlen i.a. in einer Form aufgetaucht, daß man sie zwar benutzt und evtl. auch verrechnet hat, auch mal getauscht oder abgespeichert, evtl. bestimmte Fixwerte geändert hat, man sie aber nie wirklich "verstehen" mußte.

    Darum sollen hier, bevor noch ein/zwei kleinere Abschnitte über Bits und "Bitgeschubse" folgen, zunächst ein paar Worte über dezimal - hexadezimal - binär und was damit zusammenhängt gesagt werden.


    Wichtigster Punkt: Eine Zahl ist unabhängig von der Art, wie man sie darstellt !

    soll heißen, wenn man über eine Zahl als solche redet, ist es dieser völlig egal, ob sie nun in römischer Notation (XXIII) oder dezimal (23) oder hexadezimal ($17) angesprochen/aufgeschrieben wird.


    (Es ist quasi eine Konvention, daß man davon ausgeht, daß man es mit den gleichen Objekten auf einem jeweils vorgestellten Zahlenstrahl, der aber unterschiedlich unterteilt sein kann, zu tun hat.)




    dezimal


    Kennt jeder. Das ist die Sache mit den 10ner Stellen. Immer wenn die Ziffern 0-9 ausgeschöpft sind, wird eine neue Stelle am linken Rand der Zahl eröffnet und dort mit einer neuen 1 begonnen. Wenn diese Stelle bei 9 ankommt, wird links noch eine Stelle mit einer Kapazität von 0-9 angefügt. Es ist daher eigentlich auch zulässig, statt einer 23 zu schreiben

    000023


    Dies macht dann auch noch eine zusätzliche Aussage, die bei Computern wichtig sein kann; sie sagt nämlich etwas über den maximalen Darstellungsbereich aus, den man betrachten möchte. Dieser geht hier von 000000 bis 999999, umfaßt genau also 1ne Million Zahlen. Das sind 10^6, d.h. die 10 (dezimal) als Wert des Zahlensystems in der Basis und die 6 im Exponenten für die Anzahl der Stellen.


    Das Besondere am Dezimalsystem ist eigentlich nur: es wird als üblicher Standard benutzt, weshalb wir (d.h. Menschen im (zumindest) europäischen Kulturkreis) Zahlen i.a. "in dezimal denken".

    Das ist auch der Grund, weshalb i.a. auch auf Computern (Quellcodes etc.) keine besondere Kennzeichnung von Dezimalzahlen erfolgt.

    Es ist mithin schwierig die Zahl 23 im normalen Umgang anders als als 23 zu sagen. Formal korrekter müßte man aber eigentlich über die "Zahl, die in dezimaler Notation als eine 23 dargestellt wird" sprechen.


    [Nun sieht man schon, daß das möglicherweise zu Problemen im Zeitungsladen, der Eckkneipe oder im Supermarkt führen könnte, zumindest zu Unverständnis.]


    Für die eigene Akzeptanz anderer Zahlensysteme ist das aber eine sehr hilfreiche Vorstellung, diese Trennung in Zahl und Notation gelegentlich zu überdenken.




    hexadezimal


    Kennt hier mittlerweile auch jeder. Das wurde bereits ständig benutzt - für Adressen ($5000), als Wert (#$28) oder als Kodierung für Buchstaben ($01="A") oder Farben ($02=Dunkelrot) usf.


    Man hat als erste erkennbare Besonderheit ein vorangestelltes $ Symbol. Das macht kenntlich, daß es eine hexadezimal notierte Zahl sein soll, die folgt. Das Symbol selbst ist nicht irgendwie "geregelt", daher wird auf verschiedenen Plattformen auch unterschiedliches dafür verwendet; etwa ein "&" oder ein vorangestelltes "0x".


    Als weitere Besonderheit gibt es die Sachen mit den Buchstaben, die immer mal bei Hexzahlen auftauchen. Eigentlich sind es aber nur 6 Stück und zwar "A" bis "F". Und das liegt schlicht daran, daß der Basiswert des hexadezimalen Zahlensystems die 16 ist und man für die Werte 0-9 aus reiner Bequemlichkeit die dezimale Notation beibehält und diese um 6 Zeichen ergänzt hat, um die noch fehlenden anzeigen zu können. Das das nun gerade Buchstaben sind ... ist halt so.

    (Man hätte auch z.B. direkt 16 Buchstaben benutzen können. Oder beliebige ausgedachte Zahlsymbole extra für Hexzahlen.)


    Es bedeuten also

    0 die Null, 1 die Eins, 2 die Zwei ... 9 die Neun

    und da ja zur Basis 16 dargestellt wird, gibt es ein Symbol für

    die Zehn - das A, die Elf das B, die Zwölf das C, die Dreizehn das D, die Vierzehn das E und für die Fünfzehn das F.


    Wenn die Notation das $ voranstellt, sind das also $0 bis $F, die in einer Stelle stehen können.



    Alles weitere funktioniert exakt so wie von den Dezimalzahlen bekannt:

    • Wenn eine Stelle "voll" ist, also das $F erreicht ist, wird für die nächstgrößere Zahl eine neue Stelle links angefügt, die eine $1 erhält, woraufhin nochmal von $0 bis $F in der "vollen" Stelle weitergezählt werden kann, bis beim erneuten Erreichen des $F die linke Stelle auf $2 erhöht wird.
    • Die Vorstellung des Anfügens einer Stelle kann man sich auch hier sparen, wenn man von vorneherein die Zahl als $000017 schreibt. Also "dazusagt", daß es sich um 6 Stellen handelt.
    • Die damit darstellbare Zahlenmenge errechnet sich ebenfalls über (Basis des Zahlensystems)^Stellenanzahl, d.h. 16^6 (in dezimal!), also 16777216 (in dezimal!). Und das sind also genau: $1000000

    Man kann damit jetzt auch genauso wie mit Dezimalzahlen rechnen etc. - nur die üblichen, gewohnten, eingebläuten Darstellungen passen eben nicht mehr - es ist ja auch eine andere Notation.

    So ist $7 + $8 zwar immer noch die Zahl 15, aber das ist halt hier nunmal eine $F.

    Was anschaulich "gut" funktioniert sind dagegen bestimmte Verdoppelungen, etwa $10 * 2 = $20; aber $5 * $2 ist dann schon wieder nur noch $A. Man muß dafür nochmal "neu" zählen lernen.


    Es sind für die Benutzung abseits von Rechnern etwa auch negative Ganze Zahlen einfach durch Vorsetzen eines Minussymboles möglich. Allerdings gibt es direkt auf Computern auch eine besondere Version der Darstellung negativer Zahlen, die auf einer besonderen Eigenheit der Zahlendarstellung in Binärform beruht und den Bereich einer Zahl halbiert, wobei der wertmäßig größere Halbteil zu negativen Zahlen "erklärt" wird. Also:

    $80, $81, $82 ... $FE, $FF (sind alle negativ) - die Null, $00 - dann $01, $02, $03 ... bis $7F (die positiven Zahlen)


    Eine für Computer wichtige Darstellung ist, sich auf kleine Hexzahlen zu beschränken und irgendwann kennt man diesen kleinen Zahlensatz einfach "aus Gewohnheit".

    Das Übliche sind 2 Stellen - das sind also $00 bis $FF. Dies hat vor allem damit zu tun, daß das der Bereich ist, den man mit 8 Stellen in einem binären Zahlensystem darstellen kann, und die Computerentwicklung sich in Richtung 8 Bit als eine Art Basiseinheit entwickelt hat. 8 Bit = 1 Byte = 2-Stellen-Hexzahl.

    (Das müßte übrigens nicht so sein, etwa wenn 12 Bit Rechner die Kinderzimmer (und Fabriken, Verlage etc.) erobert hätten.)


    Anwendung findet soetwas auch heute, in Zeiten der 64Bit (32Bit) Rechner, z.B. bei Grafiken, wo jede der drei Grundfarben eines Bildes mit $FF Helligkeitswerten für jeweils Rot, Grün, Blau einzeln angegeben wird.


    Natürlich ist es auch problemlos möglich größere Hexzahlen zu benutzen.

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

  • binär


    Man könnte sich nun allerlei Zahlensysteme ausdenken, etwa zur Basiszahl 60 oder zur Basis 12 oder zur Basis 72 oder zur Basis 8 oder ... manche davon sind sogar in Verwendung, oder waren es.


    Besonders interessante Zahlensysteme wären natürlich nun solche, mit besonderen Zahlen als Basis, etwa eine nette Zahl, die eine Primzahl ist und nebenbei magische Bedeutung hat, wie etwa die bei Basis 7 ! (wer mag, solle damit mal rechnen üben)


    Eine besonders besondere Zahl in dieser Welt, oder dem was wir davon wahrnehmen können, ist anscheinend die 2. Sie hat ja auch übergreifend eine hohe Anwendbarkeit im Rahmen sämtlicher aufgestellter Dichotomien und ist somit quasi Grundlage vieler Ordnungssysteme und Vorstellungen bzw. Denkweisen über die Welt. In gewisser Weise erlaubt erst sie es in der Form über die Welt nachzudenken, wie das in Europa seit ungefähr 400 Jahren gemacht wird. Man denke nur an die Ordnung der Tier- und Pflanzenwelt nach dem System des Carl von Linné.


    Jemand, der die 2 als Basis für Berechnungen bereits früh benutzt hat, war ein Herr Leibniz aus Leipzig (Jena/Nürnberg/Mainz/Hannover). Für ihn standen dabei die Werte tatsächlich eher für Bedeutungen: nämlich die "1" für Gott und die "0" für Nichts. (apropos, kleine Buchempfehlung: Die Geschichte der Null, R.Kaplan)


    Bemerkenswert an Leibniz ist, in diesem Rahmen hier, daß er eine Rechenmaschine für die vier Grundrechenarten gebaut und vorgestellt hat. Eine Vier-Spezies Staffelwalzenmaschine, also etwas in der Art der Pascaline (aus dem Register-Thread), wobei er sich dabei mit den mechanischen Widrigkeiten eines solchen Objektes arrangieren mußte, gleichzeitig theoretisch abr schon über das Rechnen mit 0 und 1 nachdachte - jedoch die "conclusio" aus Beidem dabei nicht fand und es so "verpaßte" den ersten Computer, bzw. das erste binäre Rechenwerk, nach heutigem Verständnis zu bauen. (Wahrscheinlich wäre die Maschine bißchen breiter geworden, aber mechanisch möglicherweise viel einfacher zu fertigen.)



    binär (zum Zweiten)


    Es geht um Zahlen zur Basis 2 !

    Alles andere ist wieder genau wie bei Dezimalzahlen und Hexadezimalzahlen.


    Allerdings erscheint diese Form der Zahlenrepräsentation zunächst sehr ungewöhnlich.

    Man benutzt dazu Stellen mit nur 2 möglichen Werten. Wie die benannt werden, ist nun wieder eine Festlegungsfrage. Meist werden "0" und "1" benutzt, also genau wie bei den beiden oberen Zahlensystemen. Insbesondere in Elektronik-nahen Büchern finden sich oft auch die Werte "L" und "H".


    Zur Kennzeichnung schreibt man wieder ein Symbol davor, z.B. "%", wobei sich Binärzahlen optisch so stark von anderen Zahlennotationen unterscheiden, daß es oft klar ersichtlich ist, worum es sich handelt.


    Eine Stelle kann also darstellen

    die "%0" - also die Null, und die "%1" - also die Eins


    bei weiterem Erhöhen, wird links wieder, wie gehabt, eine Stelle angefügt und diese auf "%1" gesetzt (wenn man so will, der Übertrag auf sie addiert). Es entsteht daher nach der "%01" die "%10" (Zwei), auf die die "%11" (Drei) folgt.


    Schreibt man alle benutzbaren Stellen mit, so ergäbe sich für eine 8 stellige Binärzahl

    %00000000 - für die Null

    %00000011 - für die Drei

    %11111111 - die $FF (die dezimale 255)


    Der maximale Darstellungsbereich errechnet sich wieder, wie oben, nach Zahlenbasis^Stellenanzahl, also hier: 2^8

    und das sind 256.


    Da nun ein solches "Elementarereignis" (mit den möglichen Zuständen %0 oder %1) auch den Namen BIT (Bit) trägt, handelt es sich bei einer "Zahl in binärer Darstellung mit 8 verfügbaren Stellen" um eine 8-Bit Zahl.


    Analog dazu kann man für bestimmte "Breiten" von Binärzahlen die "verfügbare Zahlenkapazität" berechnen

    in 16-Bit passen demnach 2^16 Zahlen - 65536

    in 12-Bit passen demnach 2^12 Zahlen - 4096

    in 10-Bit passen demnach 2^10 Zahlen - 1024

    in 9-Bit passen demnach 2^9 Zahlen - 512


    Man kann hier schon etwas erkennen, was evtl. noch deutlicher wird, wenn man sich eine Reihe von 1-Bit bis 12-Bit ansieht:

    2 - 4 - 8 - 16 - 32 - 64 - 128 - 256 - 512 - 1024


    Mit jeder zusätzlich verfügbaren Zahlenstelle, verdoppelt sich der darstellbare Zahlenbereich.



    Die Bit-Stellen werden nun einfach durchnummeriert. So hat eine 8-Bit Zahl genau 8 Stellen, deren kleinste die Stelle No. 0 ist, dann folgen noch 7 weitere, weshalb die oberste 8te Stelle die Nummer 7 erhält.


    %00000000 - die Binärzahl

    %76543210 - die Stellennummerierung


    Zum Gesamtwert der Zahl trägt nun jede Stelle einen bestimmten Wert bei. Wenn sie als "0" gesetzt ist, trägt sie "Nichts" bei, wenn die "1" gesetzt ist ihren gesamten Stellenwert. Der Stellenwert errechnet sich genauso wieder nach Zahlenbasis^Stelle. Der Unterschied zu oben ist, daß es hier um die Wertigkeit der einzelnen Stelle geht, oben dagegen nach der darstellbaren Gesamtzahlenmenge geschaut wurde, also einer Summe der Wertigkeiten aller Einzelstellen.


    Nun gilt

    2^0 = 1 für die erste Stelle (also die mit Nummer 0) ganz rechts und

    2^7 = 128 für die achte Stelle (also die mit Nummer 7) ganz links


    Schreibt man die gleiche Reihe, jetzt aber für die Wertigkeiten der Einzelstellen, auf, zeigt sich für Stelle 7 bis 0

    128 - 64 - 32 - 16 - 8 - 4 - 2 - 1


    Anders gesagt: die Stelle 3 trägt 2^3 also 8 zum Gesamtwert der Zahl bei, die Stelle 0 (ganz rechts) trägt 2^0 also 1 zum Gesamtwert bei und die Stelle 7 steuert 2^7 also 128 bei.

    Und das aber natürlich nur dann, wenn sie jede einzeln auf %1 gesetzt sind.

    Sind sie auf %0 gesetzt, tragen sie auch nur 0 * Stellenwert = 0 bei.


    Demnach ist eine %1011 = ( 2^3 * 1 ) + ( 2^2 * 0 ) + ( 2^1 * 1 ) + ( 2^0 * 1 ) = 8 + 0 + 2 + 1 = 11 = $0B = "Elf".


    (Solche Beispiele bitte selber mal durchrechnen !)

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

    2 Mal editiert, zuletzt von ThoralfAsmussen ()

  • Eine spannende Eigenschaft von Binärzahlen ... : Welchen Wert hat nämlich die %10110 ?

    Es handelt sich ja i.P. um das gleiche Muster wie eben (%10110 vs. %1011), allerdings um eine Stelle weiter nach links gerückt und eine 0 hinten angefügt. Soetwas nennt man eine VERSCHIEBUNG oder einen SHIFT. In dem Fall spricht man von Links-SHIFTen, weil die Zahl nach links um eine Stelle verschoben wurde.

    Da aber nun nach obigem klar ist, daß jede Stelle weiter links einfach eine Verdopplung des Wertes rechts neben ihr bedeutet, heißt das, das die Stellenwertberechnung für jede Einzelstelle den jeweils doppelten Wert im Vergleich zur un-geshifteten Zahl ergibt und somit (da ja hinten nur eine %0 angefügt wird) das Gesamtergebnis und also der Gesamtwert der Zahl einfach genau das DOPPELTE vom un-geshifteten Wert ist.

    Das funktioniert natürlich auch in die andere Richtung - SHIFTET man z.B. %1011 um eine Stelle nach rechts, ergibt sich %101. Und das sind (2^2 * 1) + (2^1 * 0) + (2^0 *1) = 5 , was quasi "exakt" der Hälfte entspricht; O.K. nur abgerundet, was aber so sein muß, da man ja die hinterste %1 verliert. Man probiere das aber mal mit geraden Werten wie 24, 32, 12 usf.

    Kurz: SHIFT nach Links = Verdoppeln , SHIFT nach Rechts = Halbieren



    Addieren und Subtrahieren funktionieren nach althergebrachtem Muster. Man addiert Werte mit gleicher Stelle, beginnend bei Stelle Nummer 0, also ganz rechts. Ergibt sich dabei ein Übertrag (wenn %1 und %1 aufeinandertreffen), entsteht eine %0 und der Übertrag wird zusätzlich auf die Stelle direkt links daneben aufaddiert.

    Und was passiert, wenn bei einer 8-Bit Addition, der Übertrag in der höchsten Stelle, der Stelle Nummer 7 auftritt ?

    Dann wird einfach das Carry-Flag gesetzt; was das Programm dann damit tut, entscheidet es selbst.

    Das Carry-Flag ist also eigentlich nur so etwas wie ein zusätzliches Bit, was bei Bedarf eine weitere (flüchtige) Stelle ganz links anfügen kann ! Wenn man das Carry-Flag berücksichtigt, rechnet man daher im Ergebnis eigentlich wie mit einer 9-Bit Zahl, wobei das Carry-Flag die Stelle Nummer 8 einnimmt.

    (Das gilt natürlich so auch für 16-Bit oder 32-Bit Rechner, nur dann an anderer Position.)



    Und nun kann man auch verstehen, wie die negativen Zahlen tatsächlich funktionieren. Diese sind ja schlecht in der CPU darstellbar, da ein echtes Minuszeichen nicht vorgesehen ist. Darum hat es verschiedene Varianten gegeben, zu versuchen, die binären Zahlen so abzubilden, das man weiterhin unverändert in der CPU mit ihnen rechnen kann, in gleicher Form, wie mit den natürlichen Zahlen, sie aber nun zusätzlich eine Aussage über das Vorzeichen treffen.

    Die Lösung bei den meisten Mikrocomputern ist das sogenannte Zweierkomplement. Dies bedeutet, daß man alle Bitstellen einer Binärzahl einzeln invertiert (aus %1 wird eine %0 und aus %0 wird eine %1) (das Komplement bildet) und zusätzlich eine 1 addiert (Wikipedia) (Beispielrechnung), um den gleichen Wert der Zahl jedoch nun mit geändertem Vorzeichen zu erhalten.

    Dadurch wird etwa die %11111111 einer 8-Bit Maschine zur -1 erklärt (%00000001 invertiert ist %11111110, +1 addiert ergibt %11111111) und absteigend alle weiteren Zahlen, bei denen das Bit in der Stelle ganz links gesetzt ist, Stelle Nummer 7, ebenfalls. Die erste Zahl mit dem gesetzten Bit-7, d.h. die %10000000, was "normalerweise" die 128 bzw. $80 wäre, ist so die kleinste negative Zahl.

    Kurz: Negative Zahlen haben das 7te Bit gesetzt; allgemeiner: das ganz links stehende. Die -1 ist die Zahl die direkt unterhalb der 0 kommt und das Zweierkomplement ermöglicht es diese auf Binärzahlen so abzubilden, daß die -1 als %11111111 dargestellt wird, d.h. 1 Bit als Vorzeichen und sieben verbleibende Stellen für die Zahl, wobei diese dann quasi rückwärts weitergezählt werden (-1 ist eine $FF, -2 ist eine $FE, -3 ist eine $FD usf. - $80 ist, bei 8-Bit, die kleinste Minuszahl).



    Man kann desweiteren eine Binärzahl auch in ihrer Mitte unterteilen. In eine linke Hälfte und eine rechte. Eine %10011110 besteht dann aus links: %1001 und rechts: %1110. Man spricht dann nicht von "linke/rechte Halbzahl" o.ä., sondern benennt diese Hälften mit dem Begriff: Nibble.



    Etwas ähnliches tritt auf, wenn man größere Zahlen darstellt, als der Rechner per se bearbeiten kann. Dafür setzt man mehrere von der CPU darstellbare Zahlen nebeneinander. Etwa werden auf einem 8-Bit Rechner doppelt so lange Adressen in 16-Bit dadurch benutzbar, daß man zwei 8-Bit Zahlen nebeneinander "stellt". Etwa eine $50 und eine $24 für die Adresse $5024. Damit das aber eindeutig wird, ob man eine $5024 oder doch eher eine $2450 geschrieben haben möchte, muß man sich die höherwertigere und die niederwertigere der beiden Zahlen irgendwie notieren. Bei den Einzelbits spricht man dafür vom MSB - dem Most Significant Bit und dem LSB - dem Least Significant Bit. Bei 8-Bit ist das MSB, das in Stelle Nummer 7, das LSB, das in Stelle Nummer 0. Im Beispiel der 16-Bit Adresse steckt das MSB in der $50 und das LSB in der $24. Es ist nun hilfreich, zu definieren (und wird oft von der CPU vorgegeben), ob von der Adresse im Speicher zuerst die höherwertige Zahl oder sie beginnend mit der niederwertigeren Zahl abgelegt wird.




    Es ist jederzeit möglich eine Zahl in einem anderen Zahlensystem darzustellen. Von dieser Möglichkeit sollte man, je nach Aufgabe, auch Gebrauch machen. Viele Assembler und -tools unterstützen derartige Umwandlungen und es ist extrem angenehm, wenn man etwa Laufvariablen dezimal angeben und Bitmuster, wenn benötigt, als Binärzahlen direkt eingeben kann.

    -- 1982 gab es keinen Raspberry Pi , aber Pi und Raspberries

    Einmal editiert, zuletzt von ThoralfAsmussen ()

    • Offizieller Beitrag

    hexadezimal (das Nibble)


    Das Übliche sind 2 Stellen - das sind also $00 bis $FF. Dies hat vor allem damit zu tun, daß das der Bereich ist, den man mit 8 Stellen in einem binären Zahlensystem darstellen kann, und die Computerentwicklung sich in Richtung 8 Bit als eine Art Basiseinheit entwickelt hat. 8 Bit = 1 Byte = 2-Stellen-Hexzahl.

    Jeweils 4 Bit dieser 8 Bit Basiseinheit nennt man Nibble. Am Beispiel $4A ist die $4 das obere Nibble und das $A das untere Nibble. Nibbles haben in der Kommunikationstechnik auch heute noch eine sehr große Bedeutung wenn es auf die optimale Nutzung des Wertebereichs von 8 Bit ankommt. Selbst in top modernen Fahrzeugen findet sich diese Verwendung.


    Nibbles lassen sich durch maskieren (UND-Verknüpfung) oder RECHTS-shiften sehr effizient aus dem Byte extrahieren.


    Wieder am Beispiel $4A:

    Die $4 erhält man durch vierfaches RECHTS-shiften, damit fällt das $A raus.

    Das $A erhält man durch eine UND Verknüpfung mit $0F, damit wird die obere $4 genullt.


    Hier ein Beispiel in der Programmiersprache "C" zum auslesen einer Uhrzeit (dezimal) aus einem HEX-Wert (VW CAN TP1.6)

    In "C" steht ">>" für RECHTS shiften und "&" für UND-VERKNÜPFUNG.

    msg[...] ist ein eindimensionaler Vektor der z.B. folgende Werte enthält $12,$34,$55,$00,$00,$00,$00,$00

    Stunden = (msg[1]>>4)*10 + (msg[1]&0x0F);

    Minuten = (msg[2]>>4)*10 + (msg[2]&0x0F);

    Sekunden = (msg[3]>>4)*10 + (msg[3]&0x0F);

    Damit steht in Stunden nun dezimal 12, in Minuten dezimal 34 und in Sekunden dezimal 55.


    Tipp: Da man bei einer Rechnernahen Programmierung das Dezimalsystem scheut wie der sogenannte "Teufel das Weihwasser" notiert man das Dezimalsystem gerne mal im HEX-Zahlensystem. Eine Dezimal 12 wird dann als $12 gespeichert. Der HEX-Wert wäre ja nun dezimal 18 aber als eigenständige Nibbles betrachtet bleibt es eine $1 also 1 und eine $2 also 2. Alles klar ;) 1*10+2=12 ...


    Über sowas stolpert man Querbeet durch alle Rechnerlandschaften und es wird gerne mal in der Kommunikation und/oder Darstellung verwendet.

  • Jeweils 4 Bit dieser 8 Bit Basiseinheit nennt man Nibble.

    Das Nibble hat noch eine weitere praktische Eigenschaft. Ein Nibble (also 4 Binärstellen) entspricht genau einer Hexadezimalstelle.

    Man kann Hexadezimalzahlen sehr einfach in Binärzahlen wandeln und umgekehrt. Das ist auch der Grund warum man überhaupt Hexidezimalzahlen bei der Programmierung verwendet.


    Das wurde zwar im Prinzip oben schon erwähnt, aber ich finde das so wichtig, dass ich das noch mal herausstellen wollte.


    Nochmal ein Beispiel: die Binärzahl %01011010 entspricht der Hex-Zahl $5A (%0101=$5 und %1010=$A).

    Mit etwas Übung kann man das im Kopf rechnen, auch bei 16-Bit oder 32-Bit Zahlen. Mit Dezimalzahlen geht das nicht so einfach.


    Früher (also ganz früher) hat man statt dem Hexadezimalsystem oft das Oktalsystem verwendet. Eine Oktalziffer entspricht 3 Binärstellen. Das lässt sich genauso gut umrechnen. Aber mit den moderneren 8 und 16 Bit-Rechner waren die Oktalzahlen unpraktisch, weil man 8 und 16 nicht 3er Grüppchen aufteilen kann. Das geht nicht auf.

    • i-Telex 7822222 dege d

    • technikum29 in Kelkheim bei Frankfurt

    • Marburger Stammtisch

    Douglas Adams: "Everything, that is invented and exists at the time of your birth, is natural. Everything that is invented until you´re 35 is interesting, exciting and you can possibly make a career in it. Everything that is invented after you´re 35 is against the law of nature. Apply this list to movies, rock music, word processors and mobile phones to work out how old you are."

    2 Mal editiert, zuletzt von detlef ()