ビット演算でorを取りたい
「-bor」演算子を使います。「|」じゃないので注意な!
PS C:\> $a = 0x001 PS C:\> $a = $a -bor 0x002 PS C:\> echo $a 3
以下は全て外れです。
PS C:\> $a = 0x001 PS C:\> echo $a 1 PS C:\> $a |= 0x002 用語 '=' は、コマンドレット、関数、操作可能なプログラム、またはスクリプト ファイルとして認識されません。用語を確認し、 再試行してください。 発生場所 行:1 文字:6 + $a |= <<<< 0x002 # あれ、だめだ。 PS C:\> $a = $a | 0x002 式は、パイプラインの最初の要素としてのみ許可されます。 発生場所 行:1 文字:15 + $a = $a | 0x002 <<<< # そうか「|」はパイプラインなんだよな。 PS C:\> $a = $a or 0x002 式またはステートメントのトークン 'or' を使用できません。 発生場所 行:1 文字:11 + $a = $a or <<<< 0x002 # 解析モードの問題かな? PS C:\> $a = ($a | 0x002) 式は、パイプラインの最初の要素としてのみ許可されます。 発生場所 行:1 文字:17 + $a = ($a | 0x002) <<<< PS C:\> $a = ($a or 0x002) 式またはステートメントのトークン 'or' を使用できません。 発生場所 行:1 文字:12 + $a = ($a or <<<< 0x002) # そうか、-orか! PS C:\> $a = $a -or 0x002 PS C:\> echo $a # おっと!いけたんじゃね? True # orz. # ここでググることを決意。
ちなみに、「+」などの算術演算子には対応する代入演算子「+=」とかがありますが、ビット演算子に対応するものは用意されていません。
PS C:\> $a = 3 PS C:\> $a += 3 PS C:\> echo $a 6