ビットマスク生成
ビット0から4つ連続した1は、マスク15になります。2進では0b1111、16進では0xfです。幅と、必要なら最下位ビットの位置を入力すると、3つの表記のマスクと対象のビット範囲が分かります。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- ビット数
- 4
- 開始
- 0
- マスク(10進)
- 15
- マスク(2進)
- 0b1111
- マスク(16進)
- 0xf
- 最下位ビット
- 0
本ビットマスク生成はビット幅と最下位セットビットの任意の開始位置を受け取り、1を幅分左シフトして1を引き、さらに開始位置だけ左シフトする古典的な式を適用し、0b接頭の2進、0x接頭の16進、10進、および両端を含むビット範囲を返します。
連続した1のマスクができるまで
ビットマスクは、大きな数値の中で、何ビットかの領域だけを取り出したり書き換えたりするための値です。幅が4ビットで最下位から始まる領域なら、マスクは2進で1111です。領域が別の位置から始まるときは、その1の並びを開始位置の分だけ左にずらします。式で表すと、2の幅乗から1を引き、さらに開始位置の分だけ左にずらした値になります。このツールは、10進・2進・16進の3つの表記と、1が並ぶビットの範囲を両端込みで示すので、手で数え直す必要がありません。
使われる場面とよくある間違い
ファームウェアやドライバーのレジスタ、通信プロトコルのヘッダー、フラグをまとめた値など、複数ビットの領域を扱う場面で使われます。よくある間違いは位置が1つずれることで、特に半導体の改版で領域の位置が変わったときに起こりがちです。マスクを毎回手で数えずに生成すれば、この誤りを防げます。ビット0は常に最下位として数えるので、データシートの表記とそのまま比べられます。ビット演算を学ぶ授業でも、手書きの答えを確かめるのに役立ちます。
活用例
パックされたレジスタとフラグ定数
幅とLSB開始から複数ビットのレジスタ用に10進・0b・0xマスクを生成し、ドライバとデータシート表を一致させます。
よくある質問
start パラメータの意味は何ですか?
start は最下位セットビットの位置で、最下位ビットを0として数えます。
ビット2から始まる領域のマスクはどう作りますか?
領域の幅はそのままにして、最下位ビットに2を指定します。4ビットの領域なら、2進で111100、10進で60、16進で0x3cになります。1111の4つの1を左に2桁ずらした値です。
幅と開始位置にはどんな制限がありますか?
幅は1から53ビットまでで、幅と開始位置の合計は53を超えられません。そのため、どのマスクも10進・2進・16進で丸めのない正確な整数のままです。
ビット0は最下位ビットですか?
はい。ビット0は常に最下位で、C、JavaScript、Rust、ほとんどのCPUのマニュアルと同じ数え方です。データシートのビット位置とそのまま対応します。
16進の結果に先頭の0が付かないのはなぜですか?
短い領域でもひと目で読めるように、16進は小文字で表示し、桁を0で埋めないためです。4ビットなら0xfと表示されます。2進も意味のあるビットだけを表示します。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/dev/bit-mask-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"bits":4}'const res = await fetch("https://api.kit.forhosting.com/dev/bit-mask-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"bits": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/bit-mask-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"bits": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/bit-mask-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"bits":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"bits":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/bit-mask-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"bits": 4
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.bit_mask_generate",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
連続する1からなるビットマスクは、フラグフィールド、パックされたプロトコルヘッダ、ファームウェアやシステムコードのレジスタ窓の基本部品です。列になったN個の1が必要で、フィールドがビットkから始まるように左シフトすることもあり、ビット単位の確認には2進、定数には10進、データシートには16進で同じ値が要ります。制限により結果は常に安全な整数に収まり、JSONクライアントが精度を失いません。
連続1ビットマスクの組み立て方
代数的には未シフトの並びは2の幅乗から1を引いた値で、シフト記法では開き括弧 1 left-shift 幅 閉じ括弧 マイナス1となり、開始位置の2乗を掛けるのが第2の左シフトです。本能力はその恒等式をそのまま実装します。ビット0は常に最下位ビットで、C、JavaScript、Rust、およびほぼすべてのCPUリファレンスと一致します。formula は生成ドキュメントや単体テストコメントで定数の横に置くシフト恒等式を再掲します。連続する1の並びは、複数ビットのフィールドがより広いワード内に載るときに使うマスクです。フィールド幅が4ビットで最下位端に置かれる場合、マスクは2進1111、10進15、hex 0xfです。同じ4ビットフィールドがビット2から始まる場合、4つの1を保ったまま2だけ左へ移し、2進111100、10進60、hex 0x3cになります。mask equals open parenthesis open parenthesis one left-shift bits close parenthesis minus one close parenthesis left-shift start。応答は bits と start をエコーし、mask_decimal をJSON数値、mask_binary を有意ビットのみの0b接頭文字列、mask_hex を強制パディングなしの小文字0x接頭16進として返します。lowest_bit と highest_bit はセットビットの両端を含む範囲を示し、手で1を数え直さずにレジスタ窓を文書化できます。
入力契約・制限・エラー挙動
start は任意で既定は0、指定するときは最下位セットビット位置を示す0から52の整数でなければなりません。成功時は常に同じ純形を返します。POSTするJSON本体では bits が必須で、欲しい連続1の個数を表す1から53までの有限整数です。JSON数値はIEEE倍精度の仮数部を共有するため、start と bits の和は最大53とし、マスクが2の53乗マイナス1である Number.MAX_SAFE_INTEGER を超えないようにします。違反、bits 欠落、非整数、真偽値、空文字列は invalid_input で規則名を示して失敗し、課金されません。エコーされた bits と start、三つの基数、両端を含むビット番号、formula 文字列です。例として bits が8で start が0なら mask_decimal は255、mask_binary は0b11111111、mask_hex は0xff、lowest_bit は0、highest_bit は7です。bits が3で start が5なら mask_decimal は224、2進0b11100000、hex 0xe0、ビット5から7がセットされます。実装は内部で BigInt シフトを使い、JavaScript の数値シフトの符号付き32ビットの罠を避け、10進フィールド用に安全な Number へ変換します。
ビットマスク生成が役立つ場面
プロトコル設計者とリバースエンジニアはヘックス定数で線路上の形式を文書化し、記事やRFC向けに一致する2進図が必要です。ビット演算を教える側は幅と開始を与え、手書きの0b・0xをフルCPUシミュレータではなく決定的サービスで照合できます。ファームウェアやドライバの作者は毎日パックされた状態・制御フィールドを定義します。マスクを一度生成すれば、シリコン改訂でフィールドが動いたときのオフバイワンを避けられます。コンパイラやVMの作者はビットフィールド抽出用のマスクとシフト列を出し、回帰スイートで教科書形と一致するオラクルを求めます。parseのA段階のため、成功する呼び出しはモデルトークンも外向きネットもなく公開の基本料金$0.002で、無効入力は残高を消費しません。要求を小さく保ち三基数をテストに固定すれば、独自のビット操作ライブラリを立てずにSDK・CMS断片・エッジワーカー向けの再現可能なフラグ定数が得られます。
連携の活用例
プロトコルと線路上フォーマットの文書化
連続1の同じ式から得た2進図とヘックス定数でヘッダのビットフィールドを文書化します。
ビットシフトとマスクの学習
採点課題で ((1 << bits) - 1) << start を確認させ、毎回1を手で数え直さずに済みます。
技術的な質問
連続する1のビットマスクをどう生成しますか?
bits(幅、1–53)と任意の start(LSB番号、既定0)を送ってください。APIは ((1 << bits) - 1) << start を mask_decimal、mask_binary(0b…)、mask_hex(0x…)として返します。
なぜ53ビットの制限があるのですか?
JSON数値は53ビット仮数のIEEE倍精度です。start + bits ≤ 53 なら mask_decimal は精度損失のない厳密な安全整数になります。
ビット0は最下位ビットですか?
はい。ビット番号付けは一般的なCPUと言語の慣習に合わせ、start だけ左シフトするとフィールドはより上位のビット側へ移ります。
ビットマスク生成の料金は?
ブラウザツールは無料です。APIは成功1回あたり$0.002のKIT前払い残高を使い、無効入力は課金されません。