ホームページ バックエンド開発 PHPチュートリアル あなたの知らないPHPビット演算子の使い方スキルまとめ

あなたの知らないPHPビット演算子の使い方スキルまとめ

Jun 21, 2017 am 10:03 AM
php スキル 要約する オペレーター

権限管理メソッドは、主に「ビット演算子」演算、&ビットと演算子、ビットまたは演算子を使用する一般的に使用されるメソッドです。演算に10進数が含まれる場合は、2進数に変換して演算に参加し、計算結果を10進数に変換して出力します。

その許可値は次のとおりです:

2^0=1、対応する2進数は「0001」です(ここで^は「べき乗」、つまり2の0乗、以下同じ)で表されます

2^1=2、対応する2桁の数字は「0010」
2^2=4、対応する2桁の数字は「0100」
2^3=8、対応する2桁の数字は「1000」

どちらかを判断する必要があります 数値が特定の数値範囲内の場合に&演算子を使用できます(値は上記の表から取得されます)

例: 7=4|2|1 (単純に理解することもできます) 7=4+2+1)

& を使用して操作すると、7&4、7&2、7&1 がすべて true であることがわかり、7&8 が false の場合は

&、詳しくない場合は、 | を確認してください。使い方についてはマニュアルをご覧ください

例の説明:

<?php
// 赋予权限值-->删除:8、上传:4、写入:2、只读:1
define(“mDELETE”,8);
define(“mUPLOAD”,4);
define(“mWRITE”,2);
define(“mREAD”,1);
//vvvvvvvvvvvvv使用说明vvvvvvvvvvvvv
//部门经理的权限为(假设它拥有此部门的所有权限),| 是位或运行符,不熟悉的就查查资料
echo mDELETE|mUPLOAD|mWRITE|mREAD ,”
“;// 相当于是把上面的权限值加起来:8+4+2+1=15
// 设我只有 upload 和 read 权限,则
echo mUPLOAD|mREAD ,”
“;//相当于是把上传、只读的权限值分别相加:4+1=5
/*
*赋予它多个权限就分别取得权限值相加,又比如某位员工拥有除了删除外的权限其余都拥有,那它的权限值是多少?
*应该是:4+2+1=7
*明白了怎么赋值给权限吧?
*/
//^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
//判断某人的权限可用,设权限值在$key中
/*
*判断权限用&位与符,
*/
$key = 13;//13=8+4+1
if($key & mDELETE) echo “有删除权限
“; //8
if($key & mUPLOAD) echo “有上传权限
“; //4
$a=$key & mWRITE; echo “有写权限
“.$a; //无此权限
if($key & mREAD) echo “有读权限
“; //1
?>
ログイン後にコピー

OK、許可スコアのアルゴリズムの 1 つは次のようなもので、シンプルで効率的であると言えます。理解できているかどうかはわかりませんが、たとえを覚えていなくても問題ありません。前提条件は、許可値を 1、2、4、8、16... のように適切に分配することです (ここには順序の問題もあります。許可が高くなるほど、許可値も高くなります)。削除は上記の例で説明した権限です)。権限配分テーブルを使用すると、対応する権限の値を追加するだけで、どの権限が必要かを簡単に把握できます。

この方法は非常に使いやすいですが、権限が細かく分散されていると、権限の値がどんどん大きくなってしまうことです。すべての権限が必要な場合は 2 の累乗になるか考えてみてください。全て合算されます。ただし、一般的な権限の場合はこれで十分です。

ビット演算Tips

1.INT型の最大値と最小値を取得
最大値:

~(1
最小値:

(1 倍する:

$n << $m

を 2 m パワーで割る:

$n >> $ m

4整数のパリティを決定します

($n & 1) == 1

5. 一時変数を使用せずに 2 つの数値を交換します

$b ^= $a; $b;

6. n の m 番目のビットを取る


($n >> ($m-1)) & 1; から 低から高へ。 n の m 番目の位置を 1 に設定します

return $n | (1 <
8. 低位から高位まで、n の m 番目の位置を 0 に設定しますreturn $n & ~(1

以上があなたの知らないPHPビット演算子の使い方スキルまとめの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

この章では、CakePHP の環境変数、一般設定、データベース設定、電子メール設定について理解します。

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

Cakephp4 で日付と時刻を操作するには、利用可能な FrozenTime クラスを利用します。

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

ファイルのアップロードを行うには、フォーム ヘルパーを使用します。ここではファイルアップロードの例を示します。

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

この章では、ルーティングに関連する次のトピックを学習します。

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP は、PHP 用のオープンソース フレームワークです。これは、アプリケーションの開発、展開、保守をより簡単にすることを目的としています。 CakePHP は、強力かつ理解しやすい MVC のようなアーキテクチャに基づいています。モデル、ビュー、コントローラー

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

CakePHP バリデータの作成 CakePHP バリデータの作成 Sep 10, 2024 pm 05:26 PM

Validator は、コントローラーに次の 2 行を追加することで作成できます。

See all articles