Arithmetische Operatoren in PowerShell, Zuweisungen, Bit-Manipulation


    Tags:

    Arithmetische Operatoren in PowerShellPowerShell dient primär dazu, die System­verwaltung zu beschleunigen und mit Hilfe von Scripts zu auto­matisieren. Dafür benötigt man keine komplexen mathe­matischen Opera­tionen, aber alle Mittel für gängige Kalku­lationen. Die Sprache bietet daher die üblichen Operatoren und erlaubt auch unter­schiedliche Daten­typen in einem Ausdruck.

    Während PowerShell bei den Vergleichs­operatoren eigene Wege geht und sich damit von allen populären Script-Sprachen unterscheidet, gibt es bei den arithmetischen Operatoren keine solchen Überraschungen.

    Einfache Operatoren für die Grundrechnungsarten

    PowerShell kennt für arithmetischen Berechnungen folgende Operatoren:

    + Addition
    - Subtraktion
    * Multiplikation
    / Division
    % Modulo (ermittelt den Rest einer Division)

    Wie üblich, benötigen sie zwei Operanden, beispielsweise

    12 + 6

    12 / 4

    In der Rangfolge stehen + und - erwartungsgemäß nach /, * und %. Addition und Subtraktion lassen sich jedoch durch die Verwendung von Klammern priorisieren:

    (12 + 6) * 3

    Anwendung auf Strings

    Der plus-Operator lässt sich nicht nur für die Addition von ganzen oder Fließkommazahlen verwenden, sondern eignet sich auch, um Strings zu verbinden:

    "Arithmetische " + "Operatoren"

    In vielen Fällen kann man beim Zusammenfügen von Zeichenketten jedoch auf diesen Operator verzichten und sich die Expansion von Variablen zunutze machen:

    $vn = "Hans"

    "$vn Huber"

    Wie man sieht, kommt dieses einfache Beispiel auch ohne +-Operator aus, um einen Vor- und einen Nachnamen zusammenzufügen.

    Nach einem ähnlichen Muster lassen sich in einer Multiplikation Zahlen und Strings kombinieren. Dies kann etwa bei der Initialisierung von Variablen interessant sein:

    "Bla" * 3

    ergibt "BlaBlaBla". Zu beachten ist dabei, dass die umgekehrte Variante nicht funktioniert:

    3 * "Bla"

    Diese Kalkulation schlägt fehl, weil PowerShell versucht, den rechten in den Datentyp des linken Operanden zu konvertieren. Dabei schlägt die Umwandlung von "Bla" in den Typ Integer fehl.

    Anwendung von arithmetischen Operatoren auf Strings in PowerShell

    Numerische Datentypen

    PowerShell versucht generell, für das Ergebnis von arithmetischen Operationen automatisch einen numerischen Datentyp zu wählen, der am wenigsten Speicher benötigt, ohne dass dies auf Kosten der Genauigkeit geht. Um welchen es sich dabei konkret handelt, lässt sich mit Hilfe der Methode GetType() anzeigen:

    (231 + 65535).GetType().Name

    Bei ganzen Zahlen bis zum Wert 2147483647 verwendet PowerShell Int32, darüber Int64. Enthält ein Ausdruck eine Fließkommazahl, dann kommt Double zum Einsatz. Zu bedenken wäre dabei, dass man unabhängig von den Windows-Einstellungen für Sprache oder Region immer einen Dezimalpunkt statt eines Komma verwenden muss.

    Inkrement- und Dekrementoperator

    Neben + und - bietet PowerShell noch zwei unäre Operatoren, um den Wert eines Ausdrucks zu erhöhen oder zu vermindern. Es handelt sich dabei um ++ und --, die aus C und davon abgeleiteten Sprachen bekannt sind.

    $i = 22; $++

    Dieses Beispiel weist der Variablen $i den Wert 22 zu und erhöht ihn anschließend um den Wert 1. Umgekehrt würde

    $i--

    ihren Wert um 1 reduzieren.

    Beide Operatoren lassen sich als Präfix oder Suffix notieren, also sowohl als $i++ als auch ++$i. Interessant ist ihr Einsatz besonders für Laufvariablen in Schleifen:

    for($i=1; $i -lt 1000; $i++){
         Anweisungen des Schleifenkörpers
    }

    Kombinierte Zuweisungsoperatoren

    Wie in den meisten anderen Script-Sprachen dient auch in PowerShell das Gleichheits­zeichen der Zuweisung von Werten an Variablen:

    $i = 5

    Neben dieser einfachen Varianten gibt es noch Kombinationen mit arithmetischen Operatoren, die eine verkürzte Schreibweise erlauben. Anstatt mit

    $i = $i + 5

    die Variable doppelt aufzuführen, kann man

    $i += 5

    notieren. Eine solche Kombination des Zuweisungs­operators ist auch mit den anderen arithmetischen Operatoren möglich: -=, *=, /=, %=

    Bit-weises Verschieben

    PowerShell erlaubt seit der Version 3.0 auch Operationen auf Bit-Ebene. Für ein Shift nach links ist -shl und nach rechts -shr zuständig. Verschiebt man beispielsweise alle Bits der Zahl 36 um 2 Stellen nach links, dann erhält man 144:

    26 -shl 2

    In binärer Form wird 36 nämlich durch 100100 repräsentiert. Beim Verschieben um zwei Stellen nach links erhält man 10010000, weil die Positionen rechts durch Nullen aufgefüllt werden. Dies entspricht dezimal der Zahl 144.

    Keine Kommentare