ROL in C++?
-
<< ist ein left-shif. Ein Rotieren nach links gibt es nicht. Must du dir selbst bauen.
-
Wo ist der Unterschied?
Rotate: 10001000 << 1 = 00010001
Shift: 10001000 << 1 = 00010000???
-
Perner schrieb:
Wo ist der Unterschied?
Rotate: 10001000 << 1 = 00010001
Shift: 10001000 << 1 = 00010000???
guck einfach auf die Zahlen (vor allem auf das niederwertigste Bit)
-
@Helium: Er sieht den Unterschied, er wollte nur noch eine Bestätigung dafür, dass das stimmt

MfG SideWinder
-
rrrrööööööchtöööööch!

-
Sagt mal, in assembler gibt es doch ROT oder nicht? Kann man das nicht einfach mit Inline Assembler machen, bevor ich mir es selber schreiben muss?
Das ging doch irgendwie so:_asm
{
}oder war es doch __asm?
-
Kann man schon, nur dann wird der Code denkbar unportabel. Vorallem haben verschiedene Compiler verschiedene Vorstellungen von Assembler Syntax.
-
Angenommen int ist 32Bit breit, dann sollte folgendes gehen:
int rol (int value, int by) { return value << by | value >> (32 - by); }
-
man könnte auch
int rol (int value, int by) { return value << by | value >> (sizeof(int) - by); }
-
sizeof(int) ist aber 4.
-
verdammt!
dann haltint rol (int value, int by) { return value << by | value >> (sizeof(int) * BITS_PER_BYTE - by); }und wo die konstante deklariert ist, und wie sie wirklich heißt, müsst ihr selber nachgucken.
-
BITS_PER_BYTE gibts übrigens auch und nennt sich CHAR_BIT.
Die rol Funktion ist allerdings nicht zuverlässig, da mit signed Werten gearbeitet wird. Das funktioniert so nur mit unsigned Werten.
-
japro schrieb:
Kann man schon, nur dann wird der Code denkbar unportabel. Vorallem haben verschiedene Compiler verschiedene Vorstellungen von Assembler Syntax.
Naja, man kann ja mit #ifdef schön absichern und dann meldet sich der Compiler wenn's führ ihn noch keine Version gibt, einfach #else #error verwenden.
-
groovemaster schrieb:
BITS_PER_BYTE gibts übrigens auch und nennt sich CHAR_BIT.
Die rol Funktion ist allerdings nicht zuverlässig, da mit signed Werten gearbeitet wird. Das funktioniert so nur mit unsigned Werten.Vor den Kopf schlag. Naja. Sowas hätte ich bei der Verwendung ganz schnell gemerkt
