popcount計算
数を2進数で表したときに1がいくつあるかを数えます。42を8ビットで書くと00101010で、1は1・3・5番目の3個、0は5個です。フラグやビットマスク、ハミング重みの練習に便利です。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 値
- 42
- ビット数
- 8
- 2進数
- 00101010
- ビットカウント
- 3
- ゼロのビット数
- 5
- セットされたビットのインデックス
- 1, 3, 5
ポピュレーションカウントは popcount やハミング重みとも呼ばれ、整数の二進表現における 1 ビットの個数です。開発者はビットセットの規模見積もり、完全なチェックサムなしのパリティ風スコア、ブルームフィルタ風マスクの集合濃度の推定、__builtin_popcount などのコンパイラ intrinsic と参照実装の突合に使います。本ポピュレーションカウント計算は非負整数と任意の固定ビット幅を受け取り、ゼロ埋め二進パターン、立っているビットの合計、その幅を埋める 0 の個数、最下位ビットを 0 番とする各 1 のインデックスを返します。
ポピュレーションカウントの意味と開発者が求める理由
計算機の算術において、非負整数のポピュレーションカウントとは、二進数字のうち 1 であるものの個数にほかなりません。同じ量はビット列のハミング重み、側方和、x86 の POPCNT や ARM の CNT といったハードウェア命令の結果など、複数の名で現れます。立っているビットを数えることは、基数変換やパリティだけを求めることとは異なります。
変換はパターンを示し、パリティは偶数か奇数かに縮約し、popcount は 1 ビット集合の完全な濃度を報告します。ゼロのポピュレーションカウントは 0 で、幅を強制しない場合は 1 ビットの 0 パターンになります。
1のビットを数えると役立つ場面
コンパイラと言語ランタイムのチームは、クロスコンパイルや WASM シムを検証する際に __builtin_popcount や Integer.bitCount などの intrinsic を純粋参照と突き合わせます。
データベースと検索の技術者は、ポスティングリストのビットマップや roaring 風チャンクにポピュレーションカウントを使い、ポスティングを具体化する前に選択度を見積もります。教室プラットフォームとコーディング面接サンドボックスは、埋められたパターンを合計の横に示し、どの位置が寄与するかを学習者が見られる決定的 popcount を必要とします。
検証失敗は残高を消費しません。
活用例
intrinsic と単体テストのオラクル
ハードウェア POPCNT や言語の bitCount ヘルパーを、固定幅の純粋なゼロ埋め二進と popcount と CI で比較します。
ビットセットとフラグの濃度
機能一覧を展開する前に、マスク内で立っているフラグやビットマップ列の数を見積もります。
ハミング重みの指導
面接や宿題の確認向けに、ゼロ埋めパターンと LSB 先頭のインデックスを 1 の合計の横に示します。
よくある質問
ポピュレーションカウント(popcount)とは何ですか?
ポピュレーションカウントは整数の二進形における 1 ビットの個数で、ハミング重みとも呼ばれます。
負の数は受け付けますか?
いいえ。 value は非負整数でなければなりません。負数の 2 の補数解釈は範囲外です。符号付き幅が必要な場合は専用の 2 の補数ツールをご利用ください。
bits パラメータは何を制御しますか?
bits は binary のゼロ埋めと範囲検査に使う符号なし幅を固定します(1–53)。省略時、幅は value の自然ビット長(0 のときは 1)です。
2つの数のハミング距離はどう求めますか?
2つの数をビットごとの排他的論理和で組み合わせ、その結果の1の数をここで数えます。1は2つの数が異なる位置を示すので、その個数がハミング距離になります。
1の位置はどのように番号付けされますか?
右端の最下位ビットを0として、右から数えます。そのため42を8ビットで00101010と書くと、1の位置は1、3、5番目になります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/dev/population-count \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":42}'const res = await fetch("https://api.kit.forhosting.com/dev/population-count", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": 42
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/population-count",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": 42
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/population-count", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":42}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":42}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/population-count", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"value": 42
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.population_count",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
負数や非整数は invalid_input で失敗し、ご依頼のない 2 の補数解釈は行いません。
ポピュレーションカウントの意味と開発者が求める理由
この濃度は、フラグフィールドが独立した真偽値を詰め込むとき、疎なマスクが行ストアで選ばれた列を表すとき、グラフィックスパイプラインが有効サンプル数を必要とするとき、面接問題が 2 語のハミング距離(ビット単位 XOR のポピュレーションカウント)を問うときに重要です。本エンドポイントは固定幅上で左から右へ決定的に走査し、ゼロ埋め二進文字列と立っているビットのインデックス一覧がランタイム間で安定するよう実装しています。JavaScript の最大安全整数はなお 53 ビットの仮数に収まり、これが本計算が受け入れる上限であり、各結果が正確な JSON 数値として残ります。
入力契約、埋め幅、応答フィールド
任意で bits(1 から 53 の整数)を送り、ゼロ埋めと範囲検査に使う符号なしワード幅を固定します。POST で JSON オブジェクトを送り、必須の非負整数 value(JSON 数または数字列、0 から Number.MAX_SAFE_INTEGER まで)を含めます。bits がある場合、value は 0 以上かつ 2 の bits 乗未満(広い幅では安全整数上限でキャップ)でなければなりません。bits を省略すると幅は value の自然ビット長(底 2 の対数の床に 1 を加えた値)となり、value が 0 のときは 1 となるため、binary フィールドが空文字になることはありません。成功時の本体は value と bits をエコーし、binary は最上位ビットを左にしたゼロ埋めビットパターン、popcount はハミング重み、zero_bits は bits から popcount を引いた値、set_bit_indices は最下位ビットをインデックス 0 として 1 が現れる各位置、method はツール識別で分岐するクライアント向けの定数 population_count です。例:value が 42、bits が 8 なら binary は 00101010、popcount は 3、zero_bits は 5、インデックスは 1・3・5 です。value 欠落、負数、小数、非数字列、1 から 53 外の bits、選んだ幅を超える value は invalid_input で失敗し課金されません。空オブジェクトと空配列は短い契約メッセージで拒否され、SDK の不具合がすぐ表面化します。
実運用で popcount API が価値を生む場面
セキュリティとプロトコルのコードは、トークンが実際に保持する権限数を記録する際にケイパビリティマスクや権限ビットフィールドのビットを数えます。実装は pure parse の tier A のため、成功した各呼び出しは公開の基本料金 $0.002 で、モデルトークンも外向きネットワークもありません。
技術的な質問
set_bit_indices の並びは?
インデックスは最下位ビットを位置 0 とし、各 1 ビットを下位から上位へ列挙します。例:value 5(二進 101)は [0, 2] です。
ポピュレーションカウント計算の料金は?
ブラウザツールは無料です。API リクエストは成功呼び出しごとに前払い KIT 残高から $0.002 です。無効入力は課金されません。