1. 論理代数の基礎:
1. 数値は 2 進数で表現され、取り得る数値は 0 と 1 のみです。
2. 基本的な操作は「and」、「or」、「not」の 3 つだけです。
AND演算は次のように定義されます: (AND演算を表すには&を使用します)
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
単純に次のように理解できます。 0 がある限り、乗算と同様に結果は 0 になります。
OR演算は次のように定義されます: (AND演算を表すために使用されます)
0 0 = 0
0 1 = 1
1 0 = 1
1 1 = 1
単純に理解できます: 1がある限り:の場合、結果は 1 となり、加算と同様です。
2.論理操作の例:
01111010101010111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111: N-1乗(マスクコード)のAND演算を行うだけです。
3. データベースフィールド定義:
データテーブル binary_sample を例に挙げます:
create table binary_sample( uid int unsigned not null,
status int unsigned not null default 0,
主キー(uid),
key i_s (status )
)engine=innodb;
ステータスフィールドの定義:
ステータスフィールドのデータ型は、可能な限り複数の属性を格納するために、次のように定義します。 「」は下位から順に記載されており、昇順(右から左)で表します。
0~2桁はユーザー登録ステータスを表します:
000は新規登録未承認を表します
001は登録承認を表します
010は上級ユーザーを表します
011は管理者を表します
100はスーパー管理者を表します
101予約済み
110予約済み
111マスクコード
3-5ユーザーの性別:
000は性別が不明であることを示します
001は性別が男性であることを示します
010は性別が女性であることを示します
011 Reserved
100 Reserved
101 Reserved
110 Reserved
111 Mask
すべての男性をクエリしたい場合 ユーザー:
から*を選択してくださいbinary_sample where status & b'111000' = b'001000';
すべての管理者ユーザーをクエリしたい場合:
select * from binary_sample where status & b'111' = b'011';
すべての男性をクエリしたい場合管理者ユーザー:
select * from binary_sample where status & b'111111' = b'001011';
新規登録されていないすべてのユーザーをクエリしたい場合:
select * from binary_sample where status & b'111' != b'000';
4 番目に、PHP プログラムを使用してこのような計算を実行します:
define("USER_NEW",0);//000 define("USER_NORMAL",1); //001
define("USER_ADVANCE") ,2);//010 define("USER_MANAGE",3);//011
define("USER_SUPER",4);//100
define("USER_MASK",7 );//111
define(" GENDER_UNKNOWN",0);// 000000
define("GENDER_MALE",8);// 001000
define("GENDER_FEMALE",9);// 010000
define("GENDER_MASK" ,56);// 111000
場合すべての男性ユーザーをクエリしたい:
$status=GENDER_MALE;
$sql="select * from binary_sample where status & ${mask}' = ${status }";すべての管理者ユーザー:
$mask=USER_MASK;
$sql="select * from binary_sample where status & ${mask}' = ${status}"; すべての男性管理者ユーザーをクエリする場合:
$status=GENDER_MALE & USER_MANAGE;
$mask = GENDER_MASK & GENDER_MASK;
$sql="select * from binary_sample where status & ${mask}' = ${status} ";新しく登録された未承認のユーザー:
$status = USER_NEW;
$mask = USER_MASK;
$sql="select * from binary_sample where status & ${mask} != ${status }";各値の意味が定義されると、クエリは基本的に解決されます。
http://www.bkjia.com/PHPjc/323920.html
www.bkjia.com
true