2の補数コンバータ
-5を8ビットで表すと11111011で、レジスタが実際に保持するビット列です。11111011を戻すと-5になります。128を8ビットにするような、幅に収まらない値は折り返さずに拒否します。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 値
- -5
- 計算モード
- To binary
- ビット数
- 8
- 二進
- 11111011
- 符号なし
- 251
- 最小
- -128
- 最大
- 127
2の補数は、現代のコンピュータが固定ビット数で符号付き整数を格納する標準的な方式です。正の値は通常の二進表現のまま、選んだ幅まで左をゼロ埋めします。その幅の合法範囲を超えるオーバーフローは静かにラップせず拒否するため、課題の正解キーやファームウェア注記を誠実に保てます。
2の補数の符号化と復号の仕組み
ビット幅 w を2以上に固定します。収まる符号付き整数は、−2^(w−1) から 2^(w−1)−1 までのすべての整数です。ゼロは全ビットゼロです。
範囲内の非負値は通常の二進数字で書き、ちょうど w ビットになるまで左をゼロ埋めします。負の値 n は、同じ閉区間のビットパターンにおける n を 2^w で割った一意の剰余として符号化されます。同等に、w ビットで書いた絶対値の各ビットを反転して1を足す、計算機組織の授業で教える古典的な「反転して1を加える」手順です。
復号はその写像の逆です。ビット列を 0 から 2^w−1 の符号なし整数 u として読み、上位ビットが0なら符号付き値は u、1なら u−2^w です。値は JavaScript の安全整数範囲内に収め、シリアライズ時に各桁が正確であるようにします。
選んだ幅を超える要求(例: 8ビットで128)は、誤った負数へラップせず、許容 min/max を列挙した明確なオーバーフローメッセージで拒否します。
実務で2の補数コンバータが使われる場面
計算機科学とデジタル設計の授業は、符号付きレジスタ、ALUフラグ、減算がモジュラー逆元の加算であるという考えに初めて触れるときに2の補数を導入します。正確なビットパターンと合法範囲を返す信頼できるオラクルは、壊れやすい表計算式なしで解答キーと実験デモを早めます。
組込みファームウェアとプロトコル文書は、8ビットまたは16ビットの2の補数語に格納された符号付きセンサ欄・温度差分・オフセット補正を hex ダンプの横に列挙し、符号ビットを一目で検証できるようにします。
コンパイラと言語ランタイムの注記は int8・int16・int32 が機械語にどう写るかを説明し、指導者は学生のパッキングコードを、各幅の0・−1・最小負・最大正の既知ビット列と照合します。面接ウォームアップやオンラインジャッジは変換実装やオーバーフロー検出を求め、共有の符号化・復号フィクスチャが採点を一貫させます。
活用例
宿題と計算機組織の実験
8/16/32ビット幅での符号付き値の符号化・復号とオーバーフロー事例を、解答キー用の単一共有オラクルで確認します。
ファームウェアとプロトコル欄の文書化
符号付きレジスタ欄とセンサ差分を、十進値の横に正確な2の補数ビット列として文書化し、レビューと立ち上げに使います。
よくある質問
2の補数とは何ですか?
固定幅 w での符号付き整数のモジュラー表現です。非負は通常の二進、負は (n mod 2^w) で上位ビットが符号なし範囲の上半分を示します。加減算は符号なしモジュラー演算と同じ回路で行えます。
Nビットに収まる範囲は?
幅 w の符号付き2の補数は −2^(w−1) から 2^(w−1)−1 までです。例: 8ビットは −128〜127、16ビットは −32768〜32767。
オーバーフロー時はどうなりますか?
静かにラップしないため、誤った課題解答や隠れたファームウェア不具合をごまかしません。
2の補数は手計算でどう求めますか?
絶対値を選んだビット幅で書き、すべてのビットを反転してから1を足します。-5を8ビットで表すと11111011になり、符号なしで読むと251です。
ビット列から元の数に戻せますか?
はい。ビット列と幅を入れると符号付きの値に戻ります。先頭のビットが1なら、符号なしの値から2の幅乗を引いた値になり、11111011は-5です。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/fmt/twos-complement \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"mode":"to_binary","bits":8}'const res = await fetch("https://api.kit.forhosting.com/fmt/twos-complement", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mode": "to_binary",
"bits": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fmt/twos-complement",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mode": "to_binary",
"bits": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fmt/twos-complement", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mode":"to_binary","bits":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mode":"to_binary","bits":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fmt/twos-complement", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"mode": "to_binary",
"bits": 8
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fmt.twos_complement",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
min_bits | 2 |
max_bits | 64 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
負の値は、その整数を幅の2のべき乗で割った剰余として格納され、最上位ビットが符号指示として働き、符号と絶対値を分ける別フィールドは不要です。このコンバータは符号付き整数とビット幅(8・16・32など)を受け取り、レジスタが保持する正確なビット列を返すか、その逆にビット列と幅から符号付き十進値を求めます。無料のブラウザツールと有料APIは同一の純粋な同型関数を共有するため、授業デモと自動化パイプラインが同じ入力で食い違うことはありません。成功したAPI呼び出しの料金は公開ベースの$0.002(1件あたり)です。
2の補数の符号化と復号の仕組み
アルゴリズムは純粋なモジュラー整数演算で、浮動小数点丸めも乱数シードも壁時計もネットワーク呼び出しもなく、同一入力は常に同一の JSON を生成します。
送信内容と戻り値
古典的確認例: 値−5 を8ビットで 11111011、その逆復号で−5、正の42を16ビットでゼロ埋めパターン。固定幅なしの符号なし十進→二進だけなら、この2の補数契約を過負荷にせず別ページを使ってください。必須の mode(to_binary または from_binary)、必須の bits(語幅 2〜64)、および mode に応じた符号付き値またはビット列を送ってください。to_binary では value を JSON 整数または符号付き数字列として渡し、別名 n・number・integer・signed を受け付けます。from_binary では binary を長さが bits の0と1の列として渡し、任意の zero-b 接頭辞と内部空白は除去されます。mode や bits の欠落、非整数、非二進文字、長さ不一致、NaN、Infinity、その幅の2の補数範囲外のオーバーフローは invalid_input で失敗し課金されません。成功時は mode と bits、符号付き値、長さ bits の正確な二進パターン、そのパターンの符号なし剰余、その幅の合法 min/max、method を twos_complement に設定して返します。成功API呼び出しは公開ベース $0.002/件、検証失敗は前払い残高を消費しません。
実務で2の補数コンバータが使われる場面
この能力は純粋な parse エンジンなので、API料金は成功1件あたり公開ベース $0.002、検証失敗は残高を消費しません。固定符号幅なしの符号なし二進列、hexのみのダンプ、IEEE浮動小数点ビットパターンは別の検索意図と別ランディングとして扱い、この符号付き固定幅コンバータを正直な範囲を超えて伸ばさないでください。
連携の活用例
パッキングコード用のテストフィクスチャ
int8/int16シリアライザの単体テスト向けに、手作業のビット数えなしで golden ビットパターンと逆復号チェックを生成します。
技術的な質問
双方向に変換できますか?
はい。mode=to_binary は符号付き値を長さ bits のビット列に、mode=from_binary はその長さのビット列を符号付き値に戻します。合法値の往復は常に同じ整数を復元します。
料金はいくらですか?
ブラウザツールは無料でローカル実行です。API要求は成功1件あたり $0.002 の前払いKIT残高を使用し、無効入力は課金されません。