トップ回答者
あまり見たことがない文法のソースを見つけましたが、どうんな意味になりますか?

質問
回答
-
以下は同じ意味です。
cp.ExStyle |= 0x20;
cp.ExStyle = cp.ExStyle | 0x20;
では「 | 」はというと、論理演算子で、論理和を表します。
論理和とは、XとYの値の真偽の組み合わせで、以下のように返すものです。
Xがfalse Yがfalse ⇒ false
Xがtrue Yがfalse ⇒ true
Xがfalse Yがtrue ⇒ true
Xがtrue Yがtrue ⇒ true
つまり、XかYどちらかの値が真であれば真、両方とも偽であれば偽を返します。
たとえば、cp.ExStyleの値を、仮に「0x80」だったとします。
「0x80」と「0x20」をそれぞれ2進数に直すと、以下のようになります。
0x80 ⇒ 10000000
0x20 ⇒ 00100000
ここで、上記2つの値の各ビットをそれぞれの論理和を求めると、以下となります。
論理和 ⇒ 10100000
この値を16進数で表せば「0xA0」となり、この値がcp.ExStyleに代入されます。
視覚的に簡単に試せる方法としては、Windows付属の電卓の表示メニューで関数電卓にし、
16進にチェックした状態で、「80」「Orボタン」「20」「=ボタン」を押すと「A0」になり、
その状態で2進数をチェックすると「10100000」になりますね。
他にも似たようなもので、論理積(AND)や排他的論理和(XOR)などがあり、
論理和を理解する上では同時に理解したい内容です。
近い内容ではビットシフトというものもあり、これも上記と併用してよく利用されます。
メモリ容量が制限された組込み系のアプリなんかで、フラグ8つをまとめて
1バイトでもって、それをディップスイッチの状態として利用したりなんかしますね。
- 回答としてマーク Pinokio-k 2010年12月10日 2:35
すべての返信
-
以下は同じ意味です。
cp.ExStyle |= 0x20;
cp.ExStyle = cp.ExStyle | 0x20;
では「 | 」はというと、論理演算子で、論理和を表します。
論理和とは、XとYの値の真偽の組み合わせで、以下のように返すものです。
Xがfalse Yがfalse ⇒ false
Xがtrue Yがfalse ⇒ true
Xがfalse Yがtrue ⇒ true
Xがtrue Yがtrue ⇒ true
つまり、XかYどちらかの値が真であれば真、両方とも偽であれば偽を返します。
たとえば、cp.ExStyleの値を、仮に「0x80」だったとします。
「0x80」と「0x20」をそれぞれ2進数に直すと、以下のようになります。
0x80 ⇒ 10000000
0x20 ⇒ 00100000
ここで、上記2つの値の各ビットをそれぞれの論理和を求めると、以下となります。
論理和 ⇒ 10100000
この値を16進数で表せば「0xA0」となり、この値がcp.ExStyleに代入されます。
視覚的に簡単に試せる方法としては、Windows付属の電卓の表示メニューで関数電卓にし、
16進にチェックした状態で、「80」「Orボタン」「20」「=ボタン」を押すと「A0」になり、
その状態で2進数をチェックすると「10100000」になりますね。
他にも似たようなもので、論理積(AND)や排他的論理和(XOR)などがあり、
論理和を理解する上では同時に理解したい内容です。
近い内容ではビットシフトというものもあり、これも上記と併用してよく利用されます。
メモリ容量が制限された組込み系のアプリなんかで、フラグ8つをまとめて
1バイトでもって、それをディップスイッチの状態として利用したりなんかしますね。
- 回答としてマーク Pinokio-k 2010年12月10日 2:35