Heim  >  Artikel  >  Web-Frontend  >  Das Konzept und Beispiele der bitweisen Speicherung

Das Konzept und Beispiele der bitweisen Speicherung

零下一度
零下一度Original
2017-06-23 09:14:471455Durchsuche

Die Abschlusssaison hat lange auf sich warten lassen. . . Nach diesem Juni trat ich offiziell der Gesellschaft bei. . . Ich habe immer das Gefühl, dass ich noch nicht bereit bin. . . . . . . . . . Großer Wendepunkt. . . Notieren Sie einige aktuelle Erkenntnisse. . .

Das Konzept der bitweisen Speicherung

Bei der Datenbankspeicherung kann eine Klasse von Binärzeichenfolgen zum Speichern mehrerer Werte verwendet werden. Wenn dieser Binärwert aus 0 und 1 besteht, kann er von rechts nach rechts gespeichert werden Links wird jedes Bit entsprechend dem 2^n-Berechnungswert addiert und dann in eine Dezimalzahl umgewandelt, wodurch der Zweck erreicht wird, mehrere Situationen mit einem Dezimalwert zu speichern.

Zum Beispiel

Es gibt jetzt 3 verschiedene CSS-Stile, die auf verschiedene Orte angewendet werden können, wie Apps, PCs, kleine Programme usw.

Wenn Sie nach Wert speichern, verwenden Sie 1-3, um die drei Stile (styleType) darzustellen, und verwenden Sie 1-3, um die Unterstützungstypen App, PC und Applet (supportType) darzustellen. Dann beim Speichern: Sie sollten diesen Weg drücken:

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

In diesem Fall speichert das Feld „supportType“ offensichtlich mehrere repräsentative Werte für „styleType“.

Wie sieht also die bitweise Speicherung aus? Es wird durch eine dreistellige Binärzeichenfolge dargestellt, die von links nach rechts den Stilen 1 bis 3 entspricht. 1 bedeutet, dass der Stil unterstützt wird, und 0 bedeutet, dass der Stil nicht unterstützt wird. Wenn Sie die Unterstützung für die Stile 1 und 3 darstellen möchten, verwenden Sie 101, um dies darzustellen. Die erste und dritte Ziffer sind 1 und die anderen Positionen sind 0. Speichern wir dann einfach eine solche dreistellige Zeichenfolge? Nein, es soll ein umgerechneter Dezimalwert gespeichert werden. Da die durch Addition jedes Bits nach der Konvertierung gemäß 2^n erhaltene Dezimalzahl invers auflösbar sein muss, können Sie wissen, welchen Stil dieser Wert darstellt.

Bei bitweiser Speicherung sollte es wie folgt gespeichert werden:

styleType supportType
1 5
2 7
3 1
... ...

Praktische Anwendung

① Szenario 1. In der App-Umgebung Filterstile, also nur solche, die Unterstützt die App-Stile werden gefiltert und angezeigt.

Anwendungsprinzip: Numerisches UND, nur 1 und 1 ergeben 1.

Mit anderen Worten, wenn wir die Stile herausfiltern möchten, die die App unterstützen, d. h. die Stile filtern, die dem entsprechen, wenn die erste Ziffer in styleType 1 ist, also 1**, Das heißt, der Dezimalwert enthält 4 Diese Zahl.

In js können Dezimalzahlen direkt UND-verknüpft werden, sodass der Code beim Durchlaufen und Filtern direkt wie folgt beurteilt werden kann:

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

②Szenario 2, SupportType ändern

Da es sich bei dem in der Datenbank gespeicherten Dezimalarray um ein Dezimalarray handelt, können Sie beim Ändern der entsprechenden Beziehung Sie müssen wissen, um welche Position es sich handelt, und den Wert an der entsprechenden Position ändern. Bei der binären Darstellung handelt es sich um den Vorgang, bei dem 0 in 1 oder 1 in 0 geändert wird, bei der Änderung des Dezimalarrays wird jedoch der entsprechende Wert erhöht und verringert Stück für 2^n.

Zum Beispiel:

    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;

Abschließend speichern Sie die entsprechende Dezimalzahl in der Datenbank.

Weitere Szenen finden Sie hier.  

 

Das obige ist der detaillierte Inhalt vonDas Konzept und Beispiele der bitweisen Speicherung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn