ホームページ >ウェブフロントエンド >jsチュートリアル >ビット単位のストレージの概念と例

ビット単位のストレージの概念と例

零下一度
零下一度オリジナル
2017-06-23 09:14:471557ブラウズ

卒業シーズンが近づいてきました。 。 。この6月から正式に社会人となりました。 。 。私はいつもまだ準備ができていないように感じます。 。 。 。 。 。 。 。 。 。 大きな転換点。 。 。最近の知識を記録します。 。 。

ビット単位のストレージの概念

データベース ストレージでは、バイナリ文字列の一種を使用して複数の値を保存できます。このバイナリ値が 0 と 1 で構成される場合、各値は右から左に加算されます。 2^n の計算値に従って 10 進数に変換することで、1 つの 10 進数で複数の状況を保存するという目的を達成します。

たとえば

現在、アプリ、PC、ミニプログラムなど、さまざまな場所に適用できる 3 つの異なる CSS スタイルがあります。

値で保存する場合は、1 ~ 3 を使用して 3 つのスタイル (styleType) を表し、1 ~ 3 を使用してサポート タイプ アプリ、PC、および小規模プログラム (supportType) をそれぞれ表します。その後、この方法で保存する必要があります。 :

スタイルタイプサポートタイプ11,321,2,331 .... ..

この場合、supportType フィールドには複数の styleType の代表値が格納されます。

では、ビット単位のストレージとはどのようなものですか。 3 桁のバイナリ文字列で表され、左から右の各桁はスタイル 1 ~ 3 に対応します。1 はスタイルがサポートされていることを意味し、0 はスタイルがサポートされていないことを意味します。スタイル 1 と 3 のサポートを表したい場合は、101 を使用してそれを表します。最初の桁と 3 桁目は 1 で、他の位置は 0 です。では、保存するときは、そのような 3 桁の文字列を保存するだけでよいでしょうか。いいえ、格納されるのは変換された 10 進数値です。 2^n に従って変換した後、各ビットを加算して得られる 10 進数は逆分解できる必要があるため、この値がどのような形式を表しているかを知ることができます。

ビット単位で保存する場合は、次のように保存する必要があります:

styleTypesupportType152731......

①シナリオ1、アプリ環境でのフィルタースタイル、つまり、サポートするアプリのみスタイルがフィルタリングされて表示されます。

適用原則: 数値の合計、1 と 1 のみが 1 になります。 言い換えると、アプリをサポートするスタイルをフィルターで除外する場合、つまり、styleType の最初の桁が 1、つまり 1** の場合に対応するスタイルをフィルターする場合、つまり 10 進数値に次の値が含まれることを意味します。 4という数字。

js では、10 進数を直接 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;

最後に、対応する 10 進数をデータベースに保存するだけです。

その他のシーンはここでご覧いただけます。

以上がビット単位のストレージの概念と例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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