2の補数
8ビットでは、−5は11111011、+5は00000101になります。符号付き整数と2から64ビットの語長を入力すると、正確な2の補数のビット列が分かります。収まらない値は折り返さずに受け付けません。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 値
- -5
- ビット数
- 8
- 2進数
- 11111011
- 符号なし
- 251
- Min
- -128
- Max
- 127
2の補数は、現代のプロセッサが符号付き整数を表す方式です。固定幅のビット列で最上位ビットが符号、残りのビットが値のモジュラー符号化を完成させます。この2の補数電卓は符号付き整数とビット幅を受け取り、その幅の正確な二進語を返します。非負値は通常の絶対値ビットを左ゼロ埋めで表します。負値はその整数を幅の2のべき乗で割った剰余となり、計算機組織の授業で教える「反転して1を加える」手順と同じです。
2の補数が意味することとビットの作り方
2の補数は、ほぼすべての CPU が符号付き整数に用いる表現です。幅 w ビットの語で表せる範囲は、−2^(w−1) から 2^(w−1)−1 までの閉区間です。最上位ビットが符号ビットです。
0 は非負値を意味し、その絶対値を通常の符号なし二進で書き、ちょうど w 文字になるまで左をゼロ埋めします。符号ビットが 1 なら負値です。負の整数 n を符号化することは、n を 2^w で割った数学的剰余を取ることと同じです。
正の絶対値の各ビットを反転して 1 を加え、ちょうど w ビットを残します。このモジュラーな見方が、0 から 1 を引くとすべて 1 の列になり、それが −1 として復号される理由であり、w ビットで最も小さい負値が 1 のあとに (w−1) 個の 0 が続く理由でもあります。
この電卓はその恒等式を BigInt のモジュラー演算で実装し、幅 2 から 64 まで各ビットを正確に保ちます。ハードウェアレジスタのように溢れた値をラップしません。符号付き整数が選んだ幅に収まらなければ、別の整数に属する誤った語を静かに返す代わりに要求は失敗します。
学習者は教科書やハードウェア手引と一致する定義で宿題を照合でき、自動化は成功応答がその幅の合法な符号化であると信頼できます。8 ビットの正の 5 は 00000101、8 ビットの負の 5 は 11111011、0 はゼロの列、−1 は 1 の列です。この四つの目印があれば、同じモジュラー規則で後の任意の幅を検証できます。
2の補数エンコーダが役立つ場面
教室では、学習者が宿題の符号付き値を 8 ビットや 16 ビットの語へ変換するときに 2 の補数電卓を使います。符号ビットを手で反転して 1 を加える手順を忘れると、1 の補数と取り違えます。試験ジェネレータは、8 ビットの 128 をオーバーフローとして拒否する決定的オラクルを必要とします。
ラップして −128 にするのはハードウェアの振る舞いであり、元の整数の合法な符号化とは別物だと学習者が見分ける必要があるからです。組込みファームウェアの点検では、文書化された定数が公表どおりの欄幅に本当に収まるかを、レジスタやプロトコル語、データシートの bitfield に詰める前に素早く確かめます。
プロトコル設計者は、符号付き欄が最上位ビット先行で送られるとき、返された語をパケットダンプと照合します。要求を小さく保ち、試験で binary 欄を断言すれば、宿題・実験・エッジワーカー向けに再現可能な 2 の補数語が得られ、自前のアセンブラ一式を立てる必要はありません。
活用例
教室と宿題の照合
演習用紙の符号付き値を 8 ビットまたは 16 ビットの 2 の補数語へ変換し、手描きのビット表なしで反転して 1 を加えた結果を確認します。
ファームウェアとプロトコルの点検
文書化された符号付き定数が公表の欄幅に本当に収まるかを、レジスタや回線形式へ詰める前に確認します。
よくある質問
整数がビット幅に収まらないとどうなりますか?
端点はラップしません。 8 ビットの合法範囲は −128 から 127 なので、128 は −128 のビット列ではなく誤りです。
負の値はどのように符号化されますか?
整数を 2^w で割った非負剰余としてです。絶対値ビットを反転して 1 を加えるのと同じです。8 ビットの −5 は 11111011 です。
どのビット幅が使えますか?
2 から 64 までの任意の整数幅です。授業とファームウェアでよく使う幅は 8・16・32・64 で、値は JavaScript の安全整数範囲内である必要があります。
符号付き整数を2の補数に変換するにはどうしますか?
正の数なら2進数で書き、選んだ語長になるまで左側を0で埋めます。負の数なら、正の値のビットをすべて反転して1を足します。こうして8ビットの−5は11111011になります。
1の補数と2の補数は何が違いますか?
1の補数は正の値の各ビットを反転するだけですが、2の補数は反転したあとに1を足します。この1手間で、8ビットの−5は11111011になり、−1はすべて1が並ぶ形になります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/math/twos-complement \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":-5,"bits":8}'const res = await fetch("https://api.kit.forhosting.com/math/twos-complement", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": -5,
"bits": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/math/twos-complement",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": -5,
"bits": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/math/twos-complement", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":-5,"bits":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":-5,"bits":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/math/twos-complement", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"value": -5,
"bits": 8
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "math.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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
整数が選んだ幅の符号付き範囲に収まらない場合、静かにラップせず invalid_input で失敗します。成功した API 呼び出しは $0.002、不正入力は課金されません。
入力契約、合法範囲、オーバーフローの伝え方
value は符号化する符号付き整数です。分数、指数表記、空文字、Infinity、NaN は拒否します。壊れた表計算セルが誤ったビット列にならないようにするためです。bits は語幅で、2 以上 64 以下の整数です。授業でよく使う int8・int16・int32・int64 を覆い、計算も軽量です。契約は意図的に fail-closed です。128 を 10000000 にラップするのは −128 の正しい符号化であり 128 の符号化ではないため、この端点はその区別を曖昧にしません。必須フィールドが二つある JSON オブジェクトを送ってください。JSON 数値でも、先頭に任意の +/− を付けた十進数字列でも構いません。絶対値は JavaScript の安全整数範囲内に収め、エコーされた value が正確な JSON 数値のままであるようにします。value の別名は n・integer・number、bits の別名は width・bit_width・nbits です。成功時は value と bits をエコーし、binary をちょうど bits 文字の 0/1 列として返し、同じパターンを非負整数として読んだ unsigned を返し、合法範囲を示す min と max を返します。例: value が −5、bits が 8 なら binary は 11111011、unsigned は 251、min は −128、max は 127 です。value がその範囲外ならハンドラは invalid_input を投げ、たとえば 128 が 8 ビットの 2 の補数に収まらないと明示します。欠落フィールド、非整数、2 から 64 の外の bits も同様に失敗し、課金されません。
2の補数エンコーダが役立つ場面
成功した API 呼び出しは公開の $0.002、検証失敗は残高を消費せず、応答のあと何も保存しません。
連携の活用例
試験と LMS の自動採点
オーバーフローを別の値へラップせず invalid_input として拒否する決定的オラクルで、2 の補数問題を採点します。
技術的な質問
符号付き整数を 2 の補数の二進へ変換するには?
整数を value、語幅を bits(2–64)として送ってください。API はちょうどその数の 0/1 文字の二進列に加え、符号なし絶対値と合法な符号付き範囲を返します。
2の補数電卓の料金はいくらですか?
ブラウザツールは無料です。API 要求は成功 1 件あたり $0.002 の前払い KIT 残高を使い、不正入力は課金されません。