• ベストアンサー

「^=」「|=」の意味を教えて

$error_level ^= E_DEPRECATED; $error_level |= E_NOTICE; の意味を教えてください。 記号(演算子?)の意味を知りたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • JaneDue
  • ベストアンサー率75% (263/350)
回答No.3

■$error_level ^= E_DEPRECATED; $error_level の E_DEPRECATED の値(1/0 On/Off)を逆転させています。 ■$error_level |= E_NOTICE; $error_levelの値にかかわらず、E_NOTICE を 1 (On) にしています。 説明はちょっとややこいのですが、数字を2進数にすると 10011011 とかになりますよね。 各桁に意味を持たせれば、煩雑な設定を 287 などと数だけで表せて便利です。(ファイルのパーミション[ 705 ]などでお馴染みかと) E_NOTICE などの定数にはそれぞれ数字が当てられているので、& | ^ などの「ビット演算子」を使用してその数字を操作しています。 『 ^ は どちらか一方だけが 1なら1 』ですから、たとえば $a = 321; //2進数では[ 101000001 ] $a ^= 4;  //4は[100] なので各桁を比較して $a= 325 (101000101) になる。 また、『 | は どちらかが1なら 1 』ですから、 $a |= 8; //8は[ 1000 ]なので、4桁目(8の位)が 1に変わります (101001001 つまり 329 に) この辺が分かりやすいかも http://9fd.blog92.fc2.com/blog-entry-210.html ビット演算子 http://php.net/manual/ja/language.operators.bitwise.php 定義済み定数 (各定数の「値」が2進数の位になっていることに注意) http://php.net/manual/ja/errorfunc.constants.php

re999
質問者

お礼

回答ありがとうございました。 >E_NOTICE などの定数にはそれぞれ数字が当てられているので、& | ^ などの「ビット演算子」を使用してその数字を操作 >定義済み定数 (各定数の「値」が2進数の位になっていることに注意) 丁寧に説明していただいたので、大変分かりやすかったです。 参考リンク先の内容も、勉強になりましたー

その他の回答 (4)

  • bakaok
  • ベストアンサー率22% (33/148)
回答No.5

>どこに書かれているか知っているのなら、 >意地悪をせず、教えていただけないでしょうか? はぁっ?自分で調べることができない教えて君の逆ギレでしょうか? 代入演算子の「User Contributed Notes」に普通に書かれていますが何か? あんな簡単な英語すら読めないのか? ついでに言うと#1の書かれていることに関してもその代入演算子の所にしっかりと「日本語」で書かれています。 それすら読めないのか? >質問を質問で返すのではなく >答をご存知なら、教えていただけないでしょうか? おまえがどこまで理解しているかが問題なんだよ。 だから問いかけている#1に対してなんだその言い方は? 質問者は相当の屑だな。 自分で調べる気が最初からない屑教えて君はゴミだからプログラミングなんてやるなよ。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4

っていうか#1がすべてでしょ? >$error_level ^= E_DEPRECATED; $error_level = $error_level ^ E_DEPRECATED; >$error_level |= E_NOTICE; $error_level = $error_level | E_NOTICE;

  • bakaok
  • ベストアンサー率22% (33/148)
回答No.2

公式リファレンスに書かれているのに何故それを読まない?

re999
質問者

補足

>公式リファレンスに書かれているのに何故それを読まない? どこですか? どこに書かれているか知っているのなら、 意地悪をせず、教えていただけないでしょうか?

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

+= とか *= ならわかりますか?

re999
質問者

補足

>+= とか *= ならわかりますか? 左辺+右辺の演算結果を左辺に代入 左辺*右辺の演算結果を左辺に代入 でしょうか? 質問を質問で返すのではなく 回答をご存知なら、教えていただけないでしょうか?

関連するQ&A