問題タブ [bitmask]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
4561 参照

c# - LINQ (to SQL) はビット単位のクエリを実行できますか?

ユーザーが属するロールのビットマスクを含むユーザーのテーブルがあります。ビットマスク値で 1 つ以上のロールに属するユーザーを選択したいと考えています。例えば:

これにより、ビットマスクにロール「2」、「4」、または「16」を持つすべてのユーザーが選択されます。これをLINQクエリで表現することは可能ですか? ありがとう。

0 投票する
6 に答える
50701 参照

sql - SQL で 2 つのビットマスクを比較して、いずれかのビットが一致するかどうかを確認する

Transact-SQL で 2 つのビットマスクを比較して、いずれかのビットが一致するかどうかを確認する方法はありますか? ユーザーが属するすべてのロールのビットマスクを持つユーザー テーブルがあり、提供されたビットマスクのいずれかのロールを持つすべてのユーザーを選択したいと考えています。したがって、以下のデータを使用すると、ロール ビットマスク 6 (デザイナー + プログラマー) は Dave、Charlie、および Susan を選択する必要がありますが、Nick は選択しません。

何か案は?ありがとう。

0 投票する
7 に答える
6662 参照

sql - ビットマスクのサイズに実質的な制限はありますか?

ビットマスクを使用して、複数の値を 1 つの変数に格納する一般的な方法があります。たとえば、ユーザーがアイテムに対する読み取り、書き込み、および実行の権限を持っている場合、それを 1 つの数字に変換するには、read = 4 (2^2), write = 2 (2^1), execute = 1 (2^0)これらを足し合わせて 7 を取得します。

私はこの手法をいくつかの Web アプリケーションで使用しています。通常、変数をフィールドに格納し、異なる値の数に応じて MEDIUMINT などの型を指定します。

私が興味を持っているのは、このように保存できる値の数に実際的な制限があるかどうかです? たとえば、数値が 64 を超えると、(64 ビット) 整数を使用できなくなります。この場合、あなたは何を使いますか?プログラム ロジックにどのような影響がありますか (つまり、ビットごとの比較を引き続き使用できますか)。

非常に大きな値のセットを取得し始めると、別の方法が最適なソリューションになることはわかっていますが、この方法の境界に興味があります。

0 投票する
4 に答える
11987 参照

sql - SQL を使用してサブネット マスクの cidr 値を決定する

データベースに格納されているサブネット マスクの cidr (ビット表現) を計算する SQL クエリを実行する方法を見つけたいと思います。たとえば、データベースには 255.255.255.0 またはその 10 進数値 (4294967040) が格納されています。選択を行い、クエリを介して /24 表現を取得したいと思います。

サブネットの最後の IP を決定するために次のようなことを行ったので、マスクの cidr 表現を決定するために同様のことをしたいと考えています。

これは、mysql、postgres、oracle などで機能する SQL ステートメントであることが望ましいです。

0 投票する
16 に答える
14893 参照

c - C で特定のビット数を割り当てることはできますか?

実行時に決定される大量のブール情報を保存しようとしています。最善の方法は何だろうと考えていました。

私は現在、以下を使用してメモリを割り当てようとしています:

pStatus = malloc((<number of data points>/8) + 1);

これで作業するのに十分なビットが得られると考えています。次に、配列表記のポインターを使用して、各ブール値を参照できます。

pStatus[element]

残念ながら、これはうまく機能していないようです。まず、メモリを整数値に初期化するのに苦労しています0。これを使用して行うことができますmemset()か? それでも、アクセスしようとするとクラッシュする理由に影響しているとは思いませんpStatus[element]

また、このアプローチが使用するのに最適であると完全に確信しているわけではありません。私が本当に欲しいのは、本質的にブール値のステータスを反映する巨大なビットマスクです。私は何かを逃しましたか?

0 投票する
6 に答える
877 参照

java - 値型のサイズをプログラムで計算する

ブール値をバイトにパックするメソッドの単体テストを書いています。さまざまなビット位置は列挙型の値によって決定され、現在は 5 つの値しかありませんが、この数が 9 になる可能性は考えられます (非常にありそうもないことですが)。

次の行に沿った簡単なテストが必要です。

プライベート バイト m_myNum; enum MyEnum {...}

assert(sizeof(m_myNum) <= MyEnum.values().length);

Java には sizeof 関数がないという印象を受けました。最もエレガントな回避策は何ですか?

- -編集

私ははっきりしていなかったと思います。通常の実行時間は気にしません。私の問題は、すべての情報を格納するバイトを使用してこのコードを記述できるようになったことですが、Enum がコードの無関係な部分で大きくなると、ビットマスキング コードが壊れるポイントに到達する可能性があります。展開されたアプリケーションでこれを行うのではなく、列挙型の状態の数がストレージ変数のビット数を超えたときに失敗する単体テストを作成したいので、プログラマーがその9番目の列挙型を追加すると、調整できます変数の型を 8 ビット以上のものに変更します。

0 投票する
11 に答える
1482 参照

c - ビット単位で大きなデータ チャンクをループする最速の方法は何ですか?

バイナリ データのメモリ ブロックをバイト単位で実行しています。

現在、私は次のようなことをしています:

マスクの場所:

(ループやインライン関数でどうにかして高速に実行できなかったので、書き出しました。)

この最初のループを改善する方法について何か提案はありますか? 私はビットに到達することにかなり慣れていません。

これは愚かなことのように思えるかもしれません。しかし、私は圧縮アルゴリズムを実装中です。ビットアクセス部分を右下にしたいだけです。

ありがとう!

PS: これは Visual Studio 2008 コンパイラに含まれています。したがって、提案がそのコンパイラに適用されるとよいでしょう。

PPS: 2 つのカウントをインクリメントする必要がないことに気付きました。1つで十分です。次に、最後に合計ビット数との差を計算します。しかし、それはカウントするだけに固有のものです。私が本当に早くしたいのは、ビット抽出です。

編集: 持ち出されたルックアップ テーブルのアイデアは素晴らしいです。タイトルで間違った質問をしたことに気づきました。最終的に私がやりたいことは、ビットを数えるのではなく、各ビットにできるだけ速くアクセスすることだからです。

別の編集: データ内でポインタを 1 ビットだけ進めることは可能ですか?

別の編集: これまでのすべての回答に感謝します。

次のステップで実装したいのは、コンテキストを分析しない単純なバイナリ算術コーダーです。だから私は今のところ単一のビットにしか興味がありません。最終的には Context-adaptive BAC になりますが、それについては後で説明します。

1 バイトではなく 4 バイトを処理することもできます。しかし、32 ビットのループもコストがかかりますね。

0 投票する
5 に答える
23091 参照

mysql - SELECTクエリから直接IPをIP + CIDRと一致させる方法はありますか?

何かのようなもの

SELECT COUNT(*) AS c FROM BANS WHERE typeid=6 AND (SELECT ipaddr,cidr FROM BANS) MATCH AGAINST 'this_ip';

したがって、最初に DB からすべてのレコードを取得してから、それらを 1 つずつ照合するわけではありません。

c > 0 の場合、一致しました。

BANS テーブル:

データベース: MySQL 5

IP および IPv タイプ (4 または 6) は、クエリ時に認識されます。

IP は、バイナリ形式の ::1 などです。

禁止 IP の例:::1/64

0 投票する
5 に答える
3967 参照

c++ - ビットマスクから配列インデックスへ

ビットマスクを配列インデックスに変換する簡単な方法はありますか?

すなわち。列挙型がある場合

関連するデータを配列に保存したいのですが、a を 0 に、b を 1 に、c を 2 に変換する簡単な方法はありますか?

どうもありがとう

0 投票する
4 に答える
12802 参照

sql - SQL Server: ビット マスクを格納するための varbinary または int?

パフォーマンスや柔軟性の観点から、ビットマスクを格納するために int と varbinary を使用する利点はありますか?

私の目的のために、これらのビットマスクで常に読み取りを行います(書き込みや更新は行いません)。