C,C#,C++中&&&&|,&と|のつながりと区別

1127 ワード

両者の計算結果は同じ(それぞれの演算対象に対して)で,性能に差があるだけである.
&&および|:論理演算子
&および|:ビット単位演算子
&&     ,a&&b         .
|| ,a||b .

&,| . ,
00000011 & 00000001=00000001
00000011 | 00000001=00000011

(&&,|)では,演算の対象が論理値,すなわちTrue/False演算結果は以下の4つのみである.True&&True=True True&&&False=False False&&True=False False&&False=False True|True=True True True|False=True False|True=True False|False=True False=False(&,|)では、演算の対象がビット、つまり1/0演算結果は以下の4つしかありません.1&1=1&0=0&1=0&1=0&0=0 1|1=1|0=1 0|1=1 0|0=0&&&&&&&&&&&&&それぞれの演算対象について、結果は同じです.同じ理屈で、|と同じです.例えば、5&&2の演算結果は、このように扱われます.まず5,非ゼロ,すなわちTrue 2,非ゼロ,True True&&True=True結果はTrueである.全体の演算過程は変換する必要がある.オペランドのバイナリを直接使用して直接比較するわけではありません.だから結果は違う.比較すると、Trueは11111111のようなバイナリの値に変換されるはずで、Falseは00000000に変換される可能性があります.ここでも、演算対象についてです.&&の演算オブジェクトはTrue/Falseです.どのタイプの式を使用しているかにかかわらず、彼はまずTrue/Falseの1つに変換してから演算に参加します.&の演算対象は0/1で、変換する必要はなく、何ビットが直接何ビットを計算すればいいのか.