数据库字段复用的基本原理与示例_MySQL
bitsCN.com
一、逻辑代数基础:
1,数字用二进制表示,所有可能出现的数只有0和1两个。
2,基本运算只有“与”、“或”、“非”三种。
与运算定义为:(用 & 表示与运算)
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
可以简单理解为:只要有一个0,结果就是0,和乘法类似。
或运算定义为:(用 | 表示与运算)
0 | 0 = 0
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1
可以简单理解为:只要有一个1,结果就是1,和加法类似。
二、逻辑运算示例:
01111010101010101111111111111111 & 1100000 = 1100000
一般可以理解为:
如果要获取一个数字某N位的数值,只需要将这个数字与2的N-1次方(掩码)进行与运算即可。
三、数据库字段定义:
以数据表 binary_sample为例:
create table binary_sample(
uid int unsigned not null,
status int unsigned not null default 0,
primary key(uid),
key i_s(status)
)engine=innodb;
status字段定义:
status字段数据类型为32bit的整数,为了尽可能的存储多个属性,我们将其进行如下定义:
以下所有“位”的描述顺序按照从低到高(从右到左)顺序表示。
0-2位表示用户注册状态:
000 表示新注册未被批准
001 表示注册被批准
010 表示位高级用户
011 表示管理员
100 表示超级管理员
101 保留
110 保留
111 掩码
3-5位用户性别:
000 表示性别不确定
001 表示性别为男
010 表示性别为女
011 保留
100 保留
101 保留
110 保留
111 掩码
如果我们要查询所有 男用户 则:
select * from 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';
四,使用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;
$mask=GENDER_MASK;
$sql="select * from binary_sample where status & ${mask}' = ${status}";
如果我们要查询所有 管理员用户 则:
$status=USER_MANAGE;
$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}";
依此类推,只要定义好每个值的含义,查询基本上就定了。
bitsCN.com
핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











이진 연산은 이진수를 기반으로 하는 연산 방법으로 덧셈, 뺄셈, 곱셈, 나눗셈이 포함됩니다. 기본 연산 외에도 이진 연산에는 논리 연산, 변위 연산 및 기타 연산이 포함됩니다. 논리 연산에는 AND, OR, NOT 등의 연산이 포함되며 변위 연산에는 왼쪽 시프트 연산과 오른쪽 시프트 연산이 포함됩니다. 이러한 연산에는 해당 규칙과 피연산자 요구 사항이 있습니다.

이진수는 1과 0으로 표현됩니다. 16비트 16진수 체계는 2진수 표현을 16진수로 변환하기 위해 {0,1,2,3…..9,A(10),B(11),…F(15)} 비트를 나타냅니다. 문자열 ID는 최하위 쪽부터 시작하여 니블이라고 하는 4비트 청크로 그룹화됩니다. 각 블록은 해당하는 16진수로 대체됩니다. 16진수와 2진수 표현을 명확하게 이해하기 위해 예를 살펴보겠습니다. 001111100101101100011101 3 E 5 B&nb

EDVAC에는 두 가지 주요 개선 사항이 있습니다. 하나는 바이너리를 사용하는 것이고, 다른 하나는 저장된 프로그램을 완성하는 것입니다. 이는 하나의 프로그램 명령에서 다음 명령으로 자동으로 진행할 수 있으며 해당 작업은 명령을 통해 자동으로 완료될 수 있습니다. "명령어"란 기계의 메모리 장치에 코드 형태로 입력되는 데이터와 프로그램을 포함합니다. 즉, 데이터를 저장하는 메모리 장치와 동일한 메모리 장치를 사용하여 작업을 수행하는 명령을 저장하는 새로운 개념입니다. - 저장된 프로그램이라고 합니다.

Golang에서 바이너리 파일을 읽는 방법은 무엇입니까? 바이너리 파일은 컴퓨터가 인식하고 처리할 수 있는 데이터가 포함된 바이너리 형식으로 저장된 파일입니다. Golang에서는 몇 가지 방법을 사용하여 바이너리 파일을 읽고 이를 원하는 데이터 형식으로 구문 분석할 수 있습니다. 다음은 Golang에서 바이너리 파일을 읽는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 먼저, 파일 객체를 반환하는 os 패키지의 Open 함수를 사용하여 바이너리 파일을 열어야 합니다. 그럼 우리는 만들 수 있습니다

Golang이 바이너리 파일을 처리할 수 있나요? Go 언어에서는 바이너리 파일을 처리하는 것이 매우 일반적이고 편리합니다. 내장된 패키지와 메소드를 사용하면 바이너리 파일을 쉽게 읽고, 쓰고, 조작할 수 있습니다. 이 문서에서는 Go에서 바이너리 파일을 처리하는 방법을 설명하고 구체적인 코드 예제를 제공합니다. 바이너리 파일 읽기 바이너리 파일을 읽으려면 먼저 파일을 열고 해당 파일 객체를 생성해야 합니다. 그런 다음 Read 메서드를 사용하여 파일에서 데이터를 읽고 바이트 단위로 저장할 수 있습니다.

제목: Go 언어에서 16진수를 2진수로 변환하는 방법을 쉽게 배웁니다. 컴퓨터 프로그래밍에서는 서로 다른 진수 간의 변환 작업이 필요한 경우가 많습니다. 그중에서도 16진수와 2진수 간의 변환이 비교적 일반적입니다. Go 언어에서는 몇 가지 간단한 코드 예제를 통해 16진수를 2진수로 변환할 수 있습니다. 먼저 16진수와 2진수의 표현방법을 살펴보자. 16진수는 숫자를 표현하는 방식으로 0~9, A~F를 사용하여 1을 표현합니다.

이진수가 주어진 문제에 대해 토론하십시오. 나머지 숫자가 다음과 같은 다른 모든 옵션 중에서 최대값이 되도록 약간 제거해야 합니다.

어떤 마우스 포인트 커넥터가 더 좋나요? 포인트 커넥터로는 AutoClicker를 사용하는 것이 좋습니다. 자동으로 마우스를 클릭할 수 있도록 도와주는 간단하고 사용하기 쉬운 마우스 연결 소프트웨어입니다. 그 이유는 AutoClicker에는 다음과 같은 장점이 있기 때문입니다. 1. 인터페이스가 간단하고 직관적이며 조작이 간단하고 초보자가 사용하기에 적합합니다. 2. 사용자 정의 클릭 간격 시간을 지원하고 필요에 따라 클릭 속도를 조정할 수 있습니다. 3. 다양한 요구 사항에 맞게 클릭 수 또는 연속 클릭 수를 설정할 수 있습니다. 4. 무료 소프트웨어이므로 구매 비용을 지불할 필요가 없습니다. 도트 커넥터를 사용하려면 AutoClicker를 사용해 보세요. Sniper 2에서 Logitech 마우스 매크로를 설정하는 방법: 다음은 Sniper 2에서 Logitech 마우스 매크로를 설정하는 단계입니다. 1. 먼저 Logitech을 구입하여 설치했는지 확인하세요.
