問題タブ [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 投票する
4 に答える
671 参照

ruby-on-rails - ビットマスクを使用して勤務スケジュール情報を保存する方法

非常にシンプルなスケジューリング アプリの作成

私はユーザーに、彼らが何曜日に働いているか、そして特定の日に朝、昼、夜のどれで働いているかを教えてほしいと頼んでいます

したがって、特定のユーザーのデータは、次のマトリックスのポイントの 1 つまたはすべてになる可能性があります。

この情報をすばやく取得して、仕事に行く時間になったことをユーザーに警告できるようにする必要があります。私は多くのユーザーを持つでしょう。

特定の日付や時間は気にしません。1 日から 7 日までの個別の日と、各日内の 3 つのスロットだけです。確かに、可能な組み合わせはたくさんあります。

この情報をどのように保存するかを検討しています。そして、ビットマスクが適切/実行可能/「このようなものを使用する方法」であるかどうか疑問に思っていますか? これにどのようにアプローチしますか?

ありがとう!

0 投票する
1 に答える
882 参照

c++ - C ++では、iOSネイティブライブラリによって公開されているCビットマスク(匿名の列挙型)を使用します

Cocoaは、typedefされた匿名の列挙型ビットフィールドを利用します。

善かれ悪しかれ、objective-C++を使用しています。.mmファイル内で、これらの列挙型ビットフィールドタイプのいずれかのタイプのプロパティに2ビット(ビット単位のORを含む)を割り当てる必要があります。libc ++コンパイラは、typedefされた匿名列挙型ビットフィールドのプロパティにint型の右辺値を与えないため、これを備えていません。

CとC++の間で列挙型のサイズに違いがあることを理解しています。では、この状況の回避策は何ですか?

割り当てを実行する私の行は、次のようなものです。

ビットフィールドの定義は次のようになります。

エラーは次のとおりです。

タイプ'UISwipeDirection'のパラメーターをタイプ'int'の右辺値で初期化できません

この種の割り当ては.mファイルでは機能しますが、.mmでは機能しません。

コンパイラはAppleのLLVM3.0(libc ++を使用)です。

0 投票する
2 に答える
608 参照

bitmask - 同じ量の1と0を持つ長さnの2進数を生成する

タイトルと同じ質問。私は2つのアプローチを行いました。1つは簡単です。からすべてのビットマスクを生成します

2 ^ {n-1}

2 ^ n

そして、すべてのビットマスクについて、同じ量の1と0があるかどうかを確認し、ある場合は、それに取り組みます。そして、それが問題です。なぜなら、私はそれらを数えるだけでなく、それらのビットマスクに取り組む必要があるからです。

O(2 ^ {n / 2})時間で実行される2番目のアプローチがありましたが、すべてのビットマスクが生成されていないようで、理由はわかりません。

2番目のアプローチは次のようなものです:0から2 ^ {n / 2}までのすべてのビットマスクを生成し、有効なビットマスク(Bと呼びます)を取得するには、次のようなことを行う必要があります:B#〜B

ここで、〜は負です。

たとえば、n = 6なので、長さ3のビットマスクを生成します。

たとえば、私はB = 101であるため、〜Bは010になり、最終的なビットマスクは101010になります。これからわか​​るように、1と0の数は同じです。

この方法は良いですか、それとも私は何か悪いことを実装していますか?たぶん、別の興味深いアプローチが存在しますか?ありがとう

クリス

0 投票する
1 に答える
1054 参照

c - チェス スライディング ピース ビットボード

滑らない駒は簡単に理解できたのですが、滑る駒が苦手でした。

現在、64 個のビットボード (正方形ごとに 1 個、配列に保存されていない)、およびマスクされた行用に 8 個のビットボード、クリアされた行用に 8 個のビットボード、マスクされた列用に 8 個のビットボード、クリアされた列用に 8 個のビットボードがあります。 、ピースの種類ごとのビットボード。

ビショップとルークの正当な動きを生成する際に、列/行で最初に占有された正方形を取得すると想定していると聞きました。

私の質問は次のとおりです。

  • ルークがどこにあるのか、適切なマスクと一緒にどのように知っていますか。
  • ビショップの場合と同様に、対角線で最初に占有された正方形をどのように正確に取得しますか.
  • 後の時点で私のタスクに役立つ他の一般的なビットボードを知っている場合は、それらを教えてください.

現在、私はブランチなしでそれを行っており、使用するブランチの量を抑えたいと思っていますが、ここでいくつかが必要になると感じており、この問題を解決するための最も効率的な方法に興味があります.

0 投票する
2 に答える
787 参照

linux - Linuxのcapability.hは34要素に32ビットマスクをどのように使用しますか?

#のファイルは、/usr/include/linux/capability.h34 の可能な機能を定義します。次のようになります。

各プロセスには、このように定義された機能があります

私は混乱しています - プロセスは 32 ビットの有効な機能を持つことができますが、capability.h で定義されている機能の合計量は 34 です。

0 投票する
1 に答える
244 参照

postgresql - Postgresql でビットマスクを選択

「1」と「2」の列を持つテーブルがあります。

ネストされた値がないことを補完するクエリを作成したい

次にarray_agg(two) group by one、 で選択します。

そして最終的に COPY クエリを使用して CSV ファイルにエクスポートします

最初のステップでどのようなクエリを作成する必要がありますか?

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

database - 二重の関係を保存するエレガントな方法はありますか(つまり、ユーザー1とユーザー2は友達です)

今月、2つの異なる作業で同じ問題が発生しました。

問題は、RDBMSを使用して、この情報を保存および照会するための洗練された方法が見当たらないことです。

2つの明白なアプローチがあります:

アプローチ1:

アプローチ2:

「f(x、y)を使用するキー」の線に沿った3番目のアプローチがあるかどうか疑問に思います。ここで、f(x、y)はすべてのx、yの組み合わせに対して一意であり、f(x、y)=== f(y、x)」

私の腸は、これらの要件を満たすことができるビット単位の演算のいくつかの組み合わせが必要であると私に言います。2列のようなもの:

key1 = x && y key2 = x + y

数学科でより多くの時間を過ごし、社会学部でより少ない時間を過ごした人々が、これの可能性または不可能性の証拠を見て、迅速に「[You moron、]その簡単に証明された(im)可能です。このリンクを参照してください」(名前の呼び出しはオプション)

他のエレガントなアプローチも大歓迎です。

ありがとう

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

java - Java で条件なしで 1 ~ 64 ビットのビットマスクを作成できますか?

1 から 64 までの int を取り、適切な「ビットマスク」を返す関数を書きたいと思います。入力と同じ数の 1 ビットがあります。

私はこのように始めました:

しかし、64 の値が間違っていることに気付きました。

今私はこれを持っています:

それはかなり醜いです。また、条件は制御フローを変更する可能性があるため、単純な算術演算よりもコストがかかります。マスクを事前に計算して静的配列に入れることもできますが、配列へのアクセスは単純な算術演算よりもコストがかかり、おそらく条件付きよりもさらに高価です。

条件なしでこれを書く合理的な方法はありますか? このコードは毎秒何億回も実行されるため、高速である必要があります。

0 投票する
2 に答える
2852 参照

sqlite - SQLiteを使用したビットマスクのグループ化

各テーブルにビットマスク列挙型を保持するために使用するフィールドがある場合、sqliteテーブルがあります。

すべての結果を返し、すべての列挙型を1つのフィールドにグループ化するクエリを実行したいと思います。

サービス:TEXT名、INTEGERサービス、INTEGERマスク

基本的に、XXXは、そのサービスごとのすべてのマスクのビットマスクOR(|)の結果になります。

データ:

その結果、次の行を取得したいと思います。

ありがとう

編集: 私の元の質問では、各マスクが単一のビットではなく、複数のビットのマスクである可能性があることを言及するのを忘れました(それを反映するために2番目の例を変更しました)。