値の表現に必要な最小ビット数計算ツール
この計算ツールは、指定した個数の異なる状態、またはゼロから指定した最大値までの非負整数を格納できる最小のバイナリ幅を求めます。2の累乗、境界値、ゼロを正確に扱い、必要なビット数と表現可能な範囲を返します。レジスター、符号化フィールド、デジタルインターフェース、コンパクトな整数形式の設計にご利用いただけます。
無料で実行
要件に合う入力をお選びください
可能性の個数を求めるのか、最大の数値コードを求めるのかをご確認ください。状態、分類、記号、動作モードなどに一意のコードを割り当てる場合は distinct_values を使用します。ゼロから上限までの全整数を格納する場合は max_value を使用します。0から1000までは1001個です。入力は一方だけ指定してください。非負の安全な整数のみを受け付けるため、端数、丸め、最大値と個数の混同を防げます。
最小幅の求め方
bビットのフィールドには2のb乗個のパターンがあります。必要数を満たす最小のbを、容量の正確な倍増で求めます。8個なら3ビット、9個なら4ビットで16パターンです。最大値ではゼロも数えるため、255は8ビット、256は9ビットです。抽象的な状態が1個だけなら情報量は0ビットですが、整数のゼロは慣例として1ビットで表します。
実際のシステムへ適用します
bits は数学的な最小値です。レジスターやプロトコル、データベースが提供する8、16、32、64ビットなどと比較してください。representable_values と maximum_representable_value で余裕を確認できます。符号なしでゼロから連続するコードを前提とします。符号、予約値、パリティ、誤り訂正、整列、フラグは別途加えてください。完全な配置設計ではなく正確な下限です。ネットワークは使用せず、API は $0.002 です。
活用例
デジタル選択フィールドの設計
各モードへ一意のコードを割り当てる最小幅を求めます。
センサー範囲の確認
ゼロから仕様上の最大値までに必要なビット数を確認します。
コンパクトな識別子の計画
バイト単位の型を選ぶ前に最小幅を見積もります。
よくある質問
値の個数に使う式は何ですか?
個数の底2対数を切り上げます。正確な倍増で境界の丸め誤差を避けます。
最大値に1を足すのはなぜですか?
ゼロを含むため、0からMまではMプラス1個あります。
1個の値が0ビットなのはなぜですか?
選択肢が1つなら情報は不要ですが、物理形式では領域を確保する場合があります。
符号ビットは含まれますか?
いいえ。非負の符号なし整数を対象とします。
両方の欄を入力できますか?
いいえ。個数と最大値を区別するため一方だけ指定してください。
API の料金はいくらですか?
基本料金は1回 $0.002 です。ブラウザーでは無料で計算できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/elec/bits-for-values \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"distinct_values":1000}'const res = await fetch("https://api.kit.forhosting.com/elec/bits-for-values", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"distinct_values": 1000
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/elec/bits-for-values",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"distinct_values": 1000
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/elec/bits-for-values", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"distinct_values":1000}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"distinct_values":1000}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/elec/bits-for-values", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"distinct_values": 1000
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.bits_for_values",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |