• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:wordpressのソースコード内の論理演算の意味)

WordPressソースコードの論理演算の意味について

このQ&Aのポイント
  • WordPressのソースコード内にある論理演算に関して、ビット演算子を使用して設定オプションの変更可能性を判断しています。
  • ビットマスク値として定義された数値と、INI_ALLやINI_USERとのビット演算を行い、ユーザースクリプトでの変更可能性を判定しています。
  • このような判定方法は、PHPのバグに関係しており、特定のバージョンで発生するaccessレベルの変更を回避するために使用されています。

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

  • ベストアンサー
回答No.1

まず、ビット演算の一般論としてですが、 3bit(3桁の2進数)で表現できる値は、10進数でいう1 , 2 , 4 と それの組み合わせの 1+2=3, 1+4=5, 2+4=6,1+2+4=7と、3bitともなしの0で つまり、0,1,2,3,4,5,6,7 の8通りの組み合わせがあります。 (ここでの使用用途では、そこまで組み合わせはないかもしませんが) リンク先のバグの説明では、 1bit目から3bit目までが有効の1+2+4の7という値を期待しているのに,実際は 1bit目から6bit目まで有効の1+2+4+8+16+32の63になってしまうと記載されています。 これを &7でビット演算することで、6bitを3bitに絞り込むことができます。 (7でANDすることで、3bitにビットマスクされます) 例 (1+2+4+8+16+32 ) & 7 → 7 (1+4+8+16+32 ) & 7 → 5 (1+8+16+32) & 7 → 1

chiku-san
質問者

お礼

ご丁寧な回答をありがとうございます! なるほど、6bitになる想定外の値を3bitに絞りこむための演算なのですね。 理解が進みました。 ビット演算の仕組みをもっと理解しないといけませんね。 基礎的な部分からわかりやすく解説してくれているサイトなど探して見たいと思います。

関連するQ&A

専門家に質問してみよう