Binäre Division/Multiplikation mit einer Potenz von 2

    • Binäre Division/Multiplikation mit einer Potenz von 2

      Hi,

      Hab heute folgendes gelernt, weiß nicht ob das all zu bekannt ist, wäre aber bestimmt für einige ganz nützlich: Statt x / 32 kann man auch x >> 5 nutzen, wobei 5 hier für die den Exponent der 2er-Potenz von 32 (25) steht. Bei x / 128 wäre dann der Exponent der 2er-Potenz 7, also wäre es x >> 7. Das ganze geht auch umgekehrt, also mit der Multiplikation, da wäre dann statt x * 32 x << 5.

      Mit freundlichen Grüßen
    • Das kannst du übrigens auch auf jede andere Basis anwenden: Zur Basis n gilt nämlich allgemein: x * (n^k) ergibt sich, wenn man x als Darstellung zur Basis n einfach um k Stellen nach links schiebt, bzw x / (n^k), wenn man die Zahl x zur Basis n darstellt und um k Stellen nach rechts schiebt.

      Anschauliches Beispiel: n / 1000 zu unserer bekannten Basis 10 bedeutet einfach nur, die Zahl n um 3 (denn 10^3 = 1000) Stellen nach rechts zu schieben.
      Wo war Gondor, als meine Klausurenphase begann?
    • Ähnlich ist es übrigens auch mit Modulo, also dem Rest einer Division^^ Statt "value % 4" kann man "value & 3" schreiben. Oft optimiert ein guter Compiler das schon (zumindest im Bereich C / C++), muss aber nicht immer der Fall sein. Solche "Tricks" würde ich übrigens nur verwenden, wenn man die Performance braucht. Ansonsten können andere Programmierer dadurch verwirrt werden.