ja-JP/about_Arithmetic_Operators.help.txt
|
TOPIC about_Arithmetic_Operators 簡単な説明 PowerShell で算術演算を行う演算子について説明します。 詳細な説明 算術演算子は数値を計算します。1 つ以上の算術演算子を使って、値の 加算、減算、乗算、除算を行ったり、除算の剰余 (モジュロ) を計算したり できます。 加算演算子 (+) と乗算演算子 (*) は、文字列、配列、ハッシュテーブルに 対しても動作します。加算演算子は入力を連結します。乗算演算子は入力の コピーを複数返します。算術文の中で異なる型のオブジェクトを混在させる こともできます。文の評価方法は、式の中で最も左にあるオブジェクトの型に よって決まります。 PowerShell 2.0 以降、すべての算術演算子は 64 ビットの数値で動作します。 PowerShell 3.0 以降、ビット演算をサポートするために -shr (右シフト) と -shl (左シフト) が追加されました。ビット演算子は整数型でのみ動作します。 PowerShell は次の算術演算子をサポートします。 + 加算。数値の加算、文字列・配列・ハッシュテーブルの連結 - 減算。数値の減算または符号反転 * 乗算。数値の乗算、文字列・配列の指定回数の複製 / 除算。数値の除算 % 剰余 (モジュロ)。除算の余りを返す -band ビット単位 AND -bor ビット単位 OR (論理和) -bxor ビット単位 XOR (排他的論理和) -bnot ビット単位 NOT -shl ビットを左へシフト -shr ビットを右へシフト 基本的な例: 6 + 2 # 結果 = 8 "file" + "name" # 結果 = "filename" @(1, "one") + @(2.0, "two") # 結果 = @(1, "one", 2.0, "two") @{"one" = 1} + @{"two" = 2} # 結果 = @{"one" = 1; "two" = 2} 6 - 2 # 結果 = 4 - -6 # 結果 = 6 (Get-Date).AddDays(-1) # 昨日の日付 6 * 2 # 結果 = 12 @("!") * 4 # 結果 = @("!","!","!","!") "!" * 3 # 結果 = "!!!" 6 / 2 # 結果 = 3 7 % 2 # 結果 = 1 5 -band 3 # 結果 = 1 -bnot 5 # 結果 = -6 5 -bor 0x03 # 結果 = 7 5 -bxor 3 # 結果 = 6 102 -shl 2 # 結果 = 408 102 -shr 2 # 結果 = 25 演算子の優先順位 PowerShell は算術演算子を次の順序で処理します。 優先順位 演算子 説明 1 () かっこ 2 - 負の数または単項演算子 3 *, /, % 乗算と除算 4 +, - 加算と減算 5 -band, -bnot ビット演算 5 -bor, -bxor ビット演算 5 -shr, -shl ビット演算 PowerShell は優先順位の規則に従って、式を左から右へ評価します。 3+6/3*4 # 結果 = 11 3+6/(3*4) # 結果 = 3.5 (3+6)/3*4 # 結果 = 12 除算と丸め 除算の商が整数でない場合、PowerShell は値を最も近い整数に丸めます。 値がちょうど .5 のときは、最も近い偶数の整数に丸めます (銀行家の 丸め)。 [int]( 5 / 2 ) # 結果は 2 (切り下げ) [int]( 7 / 2 ) # 結果は 4 (切り上げ) 異なる丸め動作を得るには [Math] クラスを使用できます。 [int][Math]::Round(5 / 2,[MidpointRounding]::AwayFromZero) # 3 [int][Math]::Ceiling(5 / 2) # 3 [int][Math]::Floor(5 / 2) # 2 結果に合わせた型変換 PowerShell は、精度を失わずに結果を表現できる最適な .NET 数値型を 自動的に選択します。 2 + 3.1 # 5.1 (2).GetType().FullName # System.Int32 (2 + 3.1).GetType().FullName # System.Double 結果が型に対して大きすぎる場合、結果を収められるように型が拡張 されます。 (512MB).GetType().FullName # System.Int32 (512MB * 512MB).GetType().FullName # System.Double System.Decimal 型は例外です。いずれかのオペランドが Decimal 型の 場合、結果は Decimal 型になります。Decimal の範囲を超える結果は エラーになります。 非数値型の加算と乗算 数値、文字列、配列、ハッシュテーブルを加算できます。また、数値、 文字列、配列を乗算できます。ただし、ハッシュテーブルは乗算できません。 文字列、配列、ハッシュテーブルを加算すると、要素が連結されます。 異なる型のオブジェクトに対して算術演算を行うこともできます。PowerShell が実行する演算は、演算の中で最も左のオブジェクトの .NET 型によって 決まります。PowerShell はすべてのオブジェクトを最初のオブジェクトの .NET 型へ変換しようとします。変換に成功すれば演算を実行し、いずれかの 変換に失敗すれば演算は失敗します。 "file" + 16 # 結果 = "file16" $array + 16 # 結果 = 1,2,3,16 $array + "file" # 結果 = 1,2,3,"file" $array * 2 # 結果 = 1,2,3,1,2,3 "file" * 3 # 結果 = "filefilefile" 評価方法が最も左のオブジェクトによって決まるため、PowerShell の加算と 乗算は厳密には可換ではありません。たとえば (a + b) は (b + a) と常に 等しいとは限りません。 "file" + 16 # 結果は file16 16 + "file" # 値 "file" を System.Int32 に変換できずエラー ビット演算子 PowerShell は標準的なビット演算子をサポートします。ビット単位 AND (-band)、ビット単位の包含 OR と排他 OR (-bor と -bxor)、ビット単位 NOT (-bnot) です。PowerShell 3.0 以降、右シフト (-shr) と左シフト (-shl) が追加されました。 演算子 説明 式 結果 -band ビット単位 AND 10 -band 3 2 -bor ビット単位 OR (包含) 10 -bor 3 11 -bxor ビット単位 OR (排他) 10 -bxor 3 9 -bnot ビット単位 NOT -bnot 10 -11 -shl 左シフト 102 -shl 2 408 -shr 右シフト 102 -shr 1 51 ビット演算子は値の 2 進形式に対して作用します。たとえば数値 10 の ビット構造は 00001010、数値 3 のビット構造は 00000011 です (1 バイト の場合)。 -shr (右シフト) 演算子は、符号付きの値をシフトするとき、左端に符号 ビットをコピーします。符号なしの値の場合は、左端に 0 が挿入されます。 算術演算子と変数 変数とともに算術演算子を使用することもできます。演算子は変数の値に 対して作用します。 $intA = 6 $intB = 4 $intA + $intB # 10 $a = "Power" $b = "Shell" $a + $b # PowerShell 算術演算子とコマンド コマンドが返すオブジェクトや、そのオブジェクトのプロパティに対しても 算術演算子を使用できます。 (Get-Date) + (New-TimeSpan -Day 1) Get-Process | Where-Object { ($_.WS * 2) -gt 50mb } 関連項目 about_Arrays about_Hash_Tables about_Operators about_Assignment_Operators about_Comparison_Operators about_Variables Get-Date New-TimeSpan ---- 原文: PowerShell-Docs (CC BY 4.0) の翻訳 / PSHelpJaJP |