Eine digitale Zahl im binären Format will ich umwandeln, so dass bit-für-bit invertiert wird, d.h.: „0“ → „1“ ODER „1“ → „0“.
In Zelle [A1] gebe ich die n×4-bit-Zahl ein, in [B1] die n-Anzahl der 4er-Blöcke, also 4-bit, 8-bit (= 1-Byte), 16-bit (= 2-Byte), 32-bit (= 4-Byte), 64-bit (= 8-Byte). In Zelle [A2] will ich das investierte Ergebnis sehen.
Die Eingabe [A1] im TEXT-Format ist einfach, im ZAHL-Format bedingt die Angabe der Anzahl fixer Stellen (4, 8, 16, 32, 64), was ohnehin die Auswahl mittels Daten-Gültigkeit [B1] bedingt.
Beispiele:
a) 0000 0110 [A1] nach 1111 1001 [A2] @ 8-bit [B1], die hier „sichtbar“ aufgefüllten vorangestellten Nullen sind inbegriffen;
b) 1110 1000 nach 1111 1111 0001 0111 @ 16-bit, die „unsichtbaren“ 8 MSBs (most significant bits), die ja mit Nullen aufgefüllt werden (1110 1000 → 0000 0000 1110 1000) stets nach Einsen wandeln.
Umgekehrtes Invertieren ist einfach:
Solange ich jede CALC-Zelle jeweils nur mit 1-bit (0 oder 1) fülle, ist die Sache einfach: 16 Zellen [A2]…[P2] belegt mit =NiCHT(A1) bis =NiCHT(P1) @ 2-Byte = 16-bit. Bei mehr Bytes wird die Sache „unappetitlich“!
Die invertierte binäre Zahl im Text-Format erhalte ich mit: =VERBiNDEN("";0;A2:P2). Im Text-Format werden – wie gewünscht – keine vorangestellten Nullen unterdrückt, wie bei Zahlen üblicherweise.
Nun zur eigentlichen Aufgabe: Der umgekehrte Weg, wie in den 2 Beispielen mit nur 3 CALC-Zellen, gelingt mir nicht!