問題タブ [bitcount]
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.
c++ - 整数のセットビット数をカウントします
私はビットカウントについてさまざまな方法を勉強しています、または整数を与えられた人口カウント方法、この日の間、私は次のアルゴリズムがどのように機能するかを理解しようとしていました
xの各値を計算した後、次のようになります。
-1を掛けると得られます-4294967294*x
が、ビット数はどのようにカウントされますか?この方法をよく理解するのを手伝ってください。ありがとう
c++ - バイトに設定されたビット数を計算する
この方法でバイトに設定されたビット数を計算する最適な方法であることに興味があります
実行時にバイトの値がわかっている場合に最適でしょうか?これをコードで使用することをお勧めしますか?
algorithm - 範囲内の高速ビットカウント
この問題を解決するアルゴリズムを見つける必要があります
。範囲 [x,y] の数値のすべての正のビットの合計を見つけます。
警告: x と y は非常に大きくなる可能性があります (1 から 10^20 まで)。
手伝ってくれてありがとう。
c# - C#で任意に大きな正の整数をカウントするビット
ビット カウントの実装は多数ありますが、私の場合は、任意の大きな数に最大で 2 つのセット ビットが含まれているかどうかをテストする必要があります。
私は次の関数を作成しましたが、これは非常に高速に見えますが、C# 用にさらに最適化できるかどうかを知りたいと考えていました。この関数は、ループで数百万回呼び出されます。
重要: 関数に送信される引数 [数値]が負になることは決してありません。
私が考えたいくつかのポイントは次のとおりです。
- 関数を静的にする。終わり。
- 静的ルックアップ配列の使用。終わり。
- バイト数が 100,000 を超えることが多いため、配列インデックスの代わりにポインターを使用します。これがどれほど役立つかはわかりません。
- 悲しいことに、.NET では保証できないインライン関数を強制します。
他の提案を受け入れます。
c++ - 40バイト配列でbit_countおよびAND演算を実行するC++の高速で効率的な方法
私のプロジェクトでは、サイズ40バイト(320ビット)の2つのバイナリ配列をANDしてから、C++でセットビット数を計算する必要があります。これを行うためのアルゴリズムをいくつか見つけましたが、C++で実装する最速の方法を知りたいです。つまり、どのc ++データ型が適切でしょうか?(unsingedchar *、unsigned int 32、u_int64、...)。私の配列サイズは40バイトですが、多くのアルゴリズムが32ビット整数と互換性があることを知っています。
このリンクで説明されているアルゴリズムについてはどうですか: 高速ビットカウント技術どちらが高速ですか?
constタイプの方が良いですか、それとも違いはありませんか?
どんな助けでも大歓迎です。
c++ - ビット数のカウント: この行はどのように機能しますか? n=n&(n-1);
この特定の行がどのように機能するかについて説明が必要です。
この関数が 1 のビット数をカウントすることは知っていますが、この行はどのようにして右端の 1 ビットをクリアするのでしょうか?
簡単に説明したり、「証拠」を提供したりできますか?
go - big.BitCount はありますか?
BitCount
big.Int 用に既に作成されたメソッドはありますか? math/big にはないようです。
明らかに、そうでない場合は自分で書きます-誰かがすでに書いていますか?
数値に設定されたビット数が必要です。Java BigInteger.bitCount()と同様です。
java - 255 の入力に対して Integer.bitCount() が 8 を返すのはなぜですか?
Integer.bitCount()の Java APIは次のことを示しています。
"public static int bitCount(int i)
指定された int 値の 2 の補数バイナリ表現の 1 ビットの数を返します。この関数は、人口カウントと呼ばれることもあります。
戻り値: 指定された int 値の 2 の補数バイナリ表現の 1 ビットの数。以来: 1.5"
したがって、255 を 2 進数に変換すると、11111111 が得られます。これを 2 の補数バージョンに変換すると、00000001 が得られ、1 ビットの数は 1 になります。ただし、このコードを実行すると:
この出力が得られます:
数値 = 255
バイナリ = 11111111
2 の補数 = 00000001
1 ビットの数 = 8
1 ではなく 8 になるのはなぜですか?