Übersicht Berechnet werden bit strings der fixen Länge n, der Wert für n kann über radio buttons rechts neben dem "rechnen"-button auf 4, 8, 16, 32, 64 oder 128 festgelegt werden. Bit strings der Länge n werden in dieser Dokumentation teilweise abkürzend als bit(n) bezeichnet.

Syntax: binäre, oktale und hexadezimale Eingabe Bit strings können binär eingegeben werden als Zeichenkette ... ... beginnend mit dem Zeichen "b" ... gefolgt von Ziffern "0" oder "1" Dabei gilt: - Leerzeichen in der Eingabe werden ignoriert. - Führende Nullen können entfallen. - Führende Nullen werden ignoriert. Die folgenden Eingaben sind beispielsweise gleichwertig: b00110101 = b 0011 0101 = b11 01 01 = b 0000 0000 0000 0000 0000 11 01 01 Die folgenden Eingabe für bit(16) b 1 0000 0000 0000 0000 erzeugt eine Fehlermeldung, da wegen der führenden Eins 17 bits erzeugt würden. Bit strings können oktal eingegeben werden als Zeichenkette ... ... beginnend mit dem Zeichen "o" ... gefolgt von Ziffern "0" bis "7" Dabei gilt: - Leerzeichen in der Eingabe werden ignoriert. - Führende Nullen können entfallen. - Führende Nullen werden ignoriert. Die folgenden Eingaben sind beispielsweise gleichwertig: o0177 = o 1 77 = b 0111 1111 Bit strings können hexadezimal eingegeben werden als Zeichenkette ... ... beginnend mit dem Zeichen "h" oder "x" ... gefolgt von Ziffern "0" bis "f" Dabei gilt: - Leerzeichen in der Eingabe werden ignoriert. - Führende Nullen können entfallen. - Führende Nullen werden ignoriert. Die folgenden Eingaben sind beispielsweise gleichwertig: x01FA = h 1 fa = b 1 1111 1010

Syntax: dezimale Eingabe Bit strings können als unsigned decimals, d.h. als Dezimalzahlen ohne Vorzeichen eingegeben werden. Dabei reicht der zulässige Wertebereich der Eingabe für bit(n) von null bis ( 2 hoch n ) - 1. Bit strings können als signed decimals, d.h. als Dezimalzahlen mit Vorzeichen eingegeben werden. Dabei reicht der zulässige Wertebereich der Eingabe für bit(n) von minus ( 2 hoch ( n - 1 ) ) bis plus ( 2 hoch ( n - 1 ) ) - 1. Negative Zahlen erzeugen bit strings im Zweierkomplement. Beispiel für bit(4): binär . unsigned . signed b0000 ........ 0 ..... +0 b0001 ........ 1 ..... +1 b0010 ........ 2 ..... +2 b0011 ........ 3 ..... +3 b0100 ........ 4 ..... +4 b0101 ........ 5 ..... +5 b0110 ........ 6 ..... +6 b0111 ........ 7 ..... +7 b1000 ........ 8 ..... -8 b1001 ........ 9 ..... -7 b1010 ....... 10 ..... -6 b1011 ....... 11 ..... -5 b1100 ....... 12 ..... -4 b1101 ....... 13 ..... -3 b1110 ....... 14 ..... -2 b1111 ....... 15 ..... -1 Wertebereich für bit(n): n Maximalwert unsigned Minimalwert signed Maximalwert signed 4 ................. 15 ................. -8 ................. +7 8 ................ 255 ............... -128 ............... +127 16 .............. 65535 ............. -32768 ............. +32767 32 ......... 4294967295 ........ -2147483648 ........ +2147483647 64 18446744073709551615 -9223372036854775808 +9223372036854775807 Wertebereich für bit(128): max-u = 340282366920938463463374607431768211455 min-s = -170141183460469231731687303715884105728 max-s = +170141183460469231731687303715884105727

Syntax: Operatoren Not: ^ And: & Or: | ^ argument invertiert alle bits von argument, z.B. ( bit (4) ): ^ b 00 11 ergibt b 11 00. argument & argument erzeugt bitweise eine logische UND-Verknüpfung der Argumente, z.B. b 0101 & b 1100 → b 0100 argument | argument erzeugt bitweise eine logische ODER-Verknüpfung der Argumente, z.B. b 0101 | b 1100 → b 1101 Es gelten die üblichen Prioritätsregeln, d.h. - Not bindet stärker als And/Or - And bindet stärker als Or Z.B. wird ^ b1101 & b1010 | b0010 als [ ( ^ b1101 ) & b1010 ] | b0010 berechnet. Die Reihenfolge der Berechnung kann durch Klammern verändert werden: ^ { b1101 & ( b1010 | b0010 ) }

Basisfunktionen Allgemein Basisfunktionen verknüpfen zwei oder mehr bit(n)-Argumente und liefern ein bit(n)-Ergebnis zurück. AND oder UND AND ( a1 , a2 , ... ) liefert die UND-Verknüpfung aller Argumente zurück, z.B. AND ( xF , x8 , xA ) entspricht xF & x8 & xA OR oder ODER OR ( a1 , a2 , ... ) liefert die ODER-Verknüpfung aller Argumente zurück. XOR oder XODER XOR ( a1 , a2 , ... ) liefert die Exklusiv-Oder-Verknüpfung aller Argumente zurück.

Funktion Bool BOOL ( arg1 , arg2 , muster ) ... ... liefert eine bitweise Verknüpfung von arg1 und arg2 zurück, ... wobei der 3. Parameter die Art der Verknüpfung angibt: - muster ist eine Zeichenkette bestehend aus vier Nullen oder Einsen. - das 1. Zeichen von muster ist das Ergebnis-bit, wenn arg1 an dieser Stelle 0 und arg2 an dieser Stelle 0 ist. - das 2. Zeichen von muster ist das Ergebnis-bit, wenn arg1 an dieser Stelle 0 und arg2 an dieser Stelle 1 ist. - das 3. Zeichen von muster ist das Ergebnis-bit, wenn arg1 an dieser Stelle 1 und arg2 an dieser Stelle 0 ist. - das 4. Zeichen von muster ist das Ergebnis-bit, wenn arg1 an dieser Stelle 1 und arg2 an dieser Stelle 1 ist. Beispiel: BOOL ( xEE05 , xC108 , 1001 ) liefert Nicht-Exklusiv-Oder ( auch bekannt als Äquivalenz ) von xEE05 und xC108 ( = xD0F2 ) zurück. xEE05 = b 1 1 1 0 1 1 1 0 0 0 0 0 0 1 0 1 xC108 = b 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 xD0F2 = b 1 1 0 1 0 0 0 0 1 1 1 1 0 0 1 0 4 4 3 1 3 3 3 2 1 1 1 1 2 3 1 3 ( Position des muster-Zeichens, welches das Ergebnis bestimmt )

Funktionen: Arithmetik NEG ( arg ) ... ... liefert das Zweierkomplement von arg zurück, d.h. als signed value betrachtet: minus arg. Ausnahme: falls arg der kleinstmögliche signed value ist, wird arg unverändert zurückgeliefert. Beispiele ( bit (4) ): neg ( + 7 ) = neg ( b0111 ) ergibt b1001 = - 7 neg ( - 7 ) = neg ( b1001 ) ergibt b0111 = + 7 neg ( - 8 ) = neg ( - 8 ) // - 8 ist kleinstmöglicher bit(4) signed value, + 8 existiert nicht ADD ( arg1 , arg2 ) ... ... liefert die Summe von arg1 und arg2 zurück. Ausnahme: falls das Ergebnis zu viele bits besitzt, wird das führende bit entfernt. Beispiele ( bit (4) ): add ( 3 , 4 ) ergibt 7 ( unsigned ), bzw. +7 ( signed ) add ( 7 , 8 ) ergibt 15 ( unsigned ) add ( 7 , 8 ) entspricht add ( 7 , -8 ) und ergibt signed -1 add ( 8 , 8 ) ergibt 0 ( unsigned ), bzw. +0 ( signed ) b1000 + b1000 ---> b10000 ---> ohne führender Eins: b0000 SUB ( arg1 , arg2 ) ... ... liefert ADD ( arg1 , NEG ( arg2 ) ) zurück. Beispiele ( bit (4) ): sub ( 5 , 3 ) ergibt 2 ( unsigned ), bzw. +2 ( signed ) sub ( -3 , -5 ) ergibt 2 ( unsigned ), bzw. +2 ( signed ) sub ( -5 , -3 ) ergibt 14 ( unsigned ), bzw. -2 ( signed ) sub ( 3 , 5 ) ergibt 14 ( unsigned ), bzw. -2 ( signed )

Funktionen: Rotieren und Schieben Allgemein Für die Parameter der folgenden Funktionen gilt: - Der erste Parameter x ist ein bit(n) string. - Der zweite Parameter y bei shLD und shRD ist ebenfalls ein bit(n) string. - Der letzte Parameter z ist eine dezimale Konstante ohne Vorzeichen. Das Funktionsergebnis ist wiederum ein bit(n) string. Rotieren roL ( x , z ) verschiebt alle bits von x um z Stellen nach links, die dabei auf der linken Seite herausfallenden bits werden rechts wieder angefügt. Beispielschema ( für bit(8) ): x = a b c d e f g h roL ( x , 3 ) = d e f g h a b c Zahlenbeispiel ( für bit(8) ): roL ( b 011 00010 , 3 ) = b 00010 011 roR ( x , z ) verschiebt alle bits von x um z Stellen nach rechts, die dabei auf der rechten Seite herausfallenden bits werden links wieder angefügt. Beispielschema ( für bit(8) ): x = a b c d e f g h roR ( x , 3 ) = f g h a b c d e Zahlenbeispiel ( für bit(8) ): roR ( 114 & 106 , 3 ) = roR ( b 01100 010 , 3 ) = b 010 01100 Links-Schieben shL ( x , z ), bzw. saL ( x , z ) verschiebt alle bits von x um z Stellen nach links, die dabei rechts frei werdenden Stellen werden mit Nullen aufgefüllt. Beispielschema ( für bit(8) ): x = a b c d e f g h shL ( x , 3 ) = d e f g h 0 0 0 Zahlenbeispiel ( für bit(8) unsigned ): 12 = b 000 01100 shL ( 12 , 3 ) = b 01100 000 = 96 = 12 × 2 hoch 3 Zahlenbeispiel ( für bit(8) signed ): -12 = b 111 10100 shL ( -12 , 3 ) = b 10100 000 = -96 = -12 × 2 hoch 3 Logisches Rechts-Schieben shR ( x , z ) verschiebt alle bits von x um z Stellen nach rechts, die dabei links frei werdenden Stellen werden mit Nullen aufgefüllt. Beispielschema ( für bit(8) ): x = a b c d e f g h shR ( x , 3 ) = 0 0 0 a b c d e Zahlenbeispiel ( für bit(8) unsigned ): 98 = b 01100 010 shR ( 98 , 3 ) = b 000 01100 = 12 = abgerundet ( 98 / 2 hoch 3 ) Arithmetisches Rechts-Schieben saR ( x , z ) verschiebt alle bits von x um z Stellen nach rechts, die dabei links frei werdenden Stellen werden mit dem ursprünglich führenden bit von x aufgefüllt. Beispielschema ( für bit(8) ): x = a b c d e f g h saR ( x , 3 ) = a a a a b c d e Zahlenbeispiel ( für bit(8) unsigned ): 98 = b 01100 010 saR ( 98 , 3 ) = b 000 01100 = 12 = abgerundet ( 98 / 2 hoch 3 ) Zahlenbeispiel ( für bit(8) signed ): -98 = b 10011 110 saR ( -98 , 3 ) = b 111 10011 = -13 = abgerundet ( -98 / 2 hoch 3 ) Schieben mit Nachschub shLd ( x , y , z ) verschiebt alle bits von x um z Stellen nach links, die dabei rechts frei werdenden Stellen werden mit den linken bits von y aufgefüllt. Beispielschema ( für bit(8) ): x = a b c d e f g h y = p q r s t u v w shLd ( x , y , 3 ) = d e f g h p q r shRd ( x , y , z ) verschiebt alle bits von x um z Stellen nach rechts, die dabei links frei werdenden Stellen werden mit den rechten bits von y aufgefüllt. Beispielschema ( für bit(8) ): x = a b c d e f g h y = p q r s t u v w shRd ( x , y , 3 ) = u v w a b c d e

Ergebnis-Anzeige Abhängig von der Wahl eines radio buttons links neben dem "rechnen"-button erfolgt die Ausgabe des Ergebnisses binär, oktal, hexadezimal, unsigned oder signed. - Bei einer Stringlänge größer als 32 erfolgt auch bei der Wahl "binär" eine hexadezimale Ausgabe. - Binäre und hexadezimale Ausgaben können durch Anweisungen in userpref.js in 4er- und/oder 8er-Gruppen gegliedert werden, siehe liesmich.htm.

Sonstiges k1pp unterliegt in der Version 0.5x folgenden Einschränkungen: - es stehen nur 3 Zeilen für die Eingabe zu Verfügung - Zwischenergebnisse der Berechnung werden nicht angezeigt Mögliche Notlösung: In der Download-Version befindet sich im Verzeichnis "texte" die Test-Datei "test_saec.htm" mit dem Menüpunkt "..r:B..". Link zur Test-Seite ( nur in der Download-Version )