비트 단위 저장의 개념과 예

零下一度
풀어 주다: 2017-06-23 09:14:47
원래의
1518명이 탐색했습니다.

오랜만에 졸업시즌이 다가왔습니다. . . 올해 6월 이후 정식으로 사회에 입문하게 되었습니다. . . 나는 항상 아직 준비가 안 됐다는 느낌을 받는다. . . . . . . . . . 큰 전환점. . . 최근 지식을 기록해 보세요. . .

비트별 저장의 개념

데이터베이스 저장에서는 일종의 이진 문자열을 사용하여 여러 값을 저장할 수 있습니다. 이 이진 값이 0과 1로 구성되면 각 값은 오른쪽에서 왼쪽으로 저장될 수 있습니다. 2^n 계산값에 따라 더한 후 십진수로 변환함으로써 여러 상황을 십진수 하나의 값으로 저장하는 목적을 달성합니다.

예를 들어

이제 앱, PC, 작은 프로그램 등 다양한 장소에 적용할 수 있는 3가지 CSS 스타일이 있습니다.

값으로 저장하는 경우 1~3을 사용하여 세 가지 스타일(styleType)을 나타내고 1~3을 사용하여 각각 지원 유형인 app, pc 및 소형 프로그램(supportType)을 나타냅니다. 그러면 이렇게 저장해야 합니다. :

styleType supportType
1 1,3
2 1,2,3
3 1
... ..

분명히 이 경우 supportType 필드는 여러 styleType 대표 값을 저장합니다.

그래서 비트별 저장은 어떤 모습일까요? 3자리 바이너리 문자열로 표현됩니다. 왼쪽에서 오른쪽으로 각 숫자는 스타일 1~3에 해당합니다. 1은 해당 스타일이 지원됨을 의미하고, 0은 해당 스타일이 지원되지 않음을 의미합니다. 스타일 1과 3에 대한 지원을 표현하려면 101을 사용하여 표현하면 첫 번째와 세 번째 숫자는 1이고 나머지 위치는 0입니다. 그러면 저장할 때 이렇게 3자리 문자열만 저장하는 건가요? 아니요, 저장되는 것은 변환된 10진수 값입니다. 2^n에 따라 변환 후 각 비트를 더한 십진수는 역해석이 가능해야 하므로 이 값이 어떤 스타일을 나타내는지 알 수 있습니다.

비트 단위로 저장하는 경우 다음과 같이 저장해야 합니다.

3

1......적용 원리: 수치 합, 1과 1의 결과만 1이 됩니다.
실용적 적용
①시나리오 1, 앱 환경에서 필터 스타일, 즉, 앱만 지원됩니다 스타일이 필터링되어 표시됩니다.

즉, 앱을 지원하는 스타일을 필터링하려면, 즉 styleType의 첫 번째 숫자가 1, 즉 1**일 때 해당하는 스타일을 필터링하면 됩니다. 숫자 4.

js에서는 십진수를 직접 AND로 연결할 수 있으므로 순회 및 필터링 시 코드를 다음과 같이 직접 판단할 수 있습니다.

(item.supportType & 4 == 4)?'对应的styleType支持':'对应的styleType不支持'    //注意,==优先级比&大,所以要加括号
로그인 후 복사

②시나리오 2, supportType을 수정합니다

데이터베이스에 저장된 것은 10진수 배열이므로 해당 관계를 수정할 때에는 어느 위치가 바뀌는지 알아야 하고, 해당 위치의 값을 바꿔야 한다. 이진수 표현은 0이 1이나 1로 바뀌는 과정이다. 0으로 변경하지만 10진수 배열을 변경하는 것은 해당 비트를 변경하는 2^n의 증가 및 감소 과정입니다.

예:

    var supportType = { //按位编码,预留3位
        'app':4,
        'pc':2,
        'mini':1
    }
  var supportVal = 0;
  i f(obj.supportmini == 1){ //支持小程序
     supportVal= supportVal+supportType .mini;
   } 
  if(obj.supportPc == 1){ //支持pc
     supportVal= supportVal+ supportType .pc;
  } 
  obj.supportVal= supportVal;
로그인 후 복사

마지막으로 해당 십진수를 데이터베이스에 저장합니다.

더 많은 장면은 여기에서 확인하실 수 있습니다. ​

위 내용은 비트 단위 저장의 개념과 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿