Hallo Wolfgang,
Hier hat Micha Kuehn offenbar zwei Operationen verwechselt:
> > Warum wird im Beispiel
> > "BITLSHIFT(6;1) ergibt 12" davon ausgeganen, dass die 6 als 0110 zu
> > interpretieren ist und nicht als 00000110?
>
> Diesen Satz verstehe ich nicht; 0110 << 1 = 1100 aka 12, und 00000110
> << 1 = 00001100 aka 12.
>
> > Hier wäre das Ergebnis
> > gleich, aber wenn ich 6 mit nur drei Stellen angebe (110) wird beim
> > SHIFT 101 daraus, also eine 5...
Es gibt einmal die "klassische" SHIFT-Operation, die einfach nur eine
Multiplikation mit Zwei darstellt, was durch "Anfügen einer Null"
beschrieben werden kann.
Das andere ist das, was ich als "circular shift" oder auch
"roll/rotate" kenne: Hier wird das höchste Bit nach dem SHIFT in die
niedrigste Position geschoben. Dabei ist die Breite der Zahl wichtig:
1101 -> [1]101 -> 101[1] -> 1011
00001101 -> [0]0001101 -> 0001101[0] -> 00011010
Eine Möglichkeit (bei 3 Stellen): AND(ZAHL;4)/4+BITLSHIFT(ZAHL)
Mit dem ersten AND prüfst du darauf, ob das erste Bit gesetzt ist und
ziehst es an die dritte Stelle ( /4 ). Anschließend führst du das
LSHIFT durch und hängst die vormals 1. Ziffer hinten an.
Gruß,
Michael
--
____
/ / / / /__/ Michael Höhne /
/ / / / / [email protected] /
________________________________/
--
Liste abmelden mit E-Mail an: [email protected]
Probleme?
http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert