ForHosting KIT · 開発者向けツール

2の補数バイナリ計算

固定幅で双方向に変換できます。8ビットの-18は11101110で、11101110を8ビットとして読むと-18に戻ります。幅は2から53ビットまで選べ、黙って桁があふれることはありません。ブラウザで無料で使えます。

  • 無料
  • ブラウザで動作
  • 登録不要
  • データは端末の外に出ません
ご利用方法 ウェブAPIメールTelegramアプリ 近日

2の補数は、プロセッサー、ファイル形式、レジスター、ネットワークプロトコルで符号付き整数を固定幅で表す標準的な方式です。この変換機能は双方向に対応しています。整数とビット幅を指定すると正確なバイナリパターンを取得でき、バイナリパターンと幅を指定すると符号付き整数を復元できます。範囲外の値を暗黙に折り返さず、すべての入力を検証します。

変換前にビット幅をお選びください

2の補数の値は、幅が分かって初めて意味が確定します。同じ末尾のビットでも、8ビット、16ビット、32ビットのワードとして解釈すると異なる値になる場合があります。選択した幅の最上位ビットが符号を示すためです。

まず2から53ビットの幅を選び、次に変換方向を指定してください。整数からバイナリへ変換する場合は、符号付き整数を入力します。変換機能は、負の2^(bits-1)から2^(bits-1)-1までの有効範囲を検査します。

したがって、8ビットでは-128から127までを扱えます。整数が範囲外の場合、上位ビットを捨てたり誤解を招く折り返しを行ったりせず、入力エラーを返します。この厳密な動作は、レジスター定義、シリアライザーの境界、演習問題、データ配置の確認に役立ちます。

成功時の結果には常に指定数の桁が含まれます。非負値には先頭のゼロが付き、負値には固定幅表現に必要な先頭の1が付きます。

エンコードとデコードの仕組み

非負の整数をエンコードする場合は、通常の2進表記を使い、選択した幅に達するまで左側をゼロで埋めます。負の整数では、値に2^bitsを加え、その非負の剰余をバイナリで表します。この剰余による定義は、正の絶対値の全ビットを反転して1を加える手計算と同じ結果になりますが、例外を避けて数学を直接表現できます。

デコードでは逆の規則を適用します。最初にビット列を符号なしの量として読みます。先頭ビットが0なら、その量がそのまま符号付きの答えです。

先頭が1なら、2^bitsを引いて負の値を復元します。バイナリ入力には0と1だけを使用し、宣言した文字数と完全に一致させてください。幅を推測せず、デコード時に埋め合わせを追加せず、余分な桁も切り捨てません。

この仕様により往復変換を予測できます。受理された各整数は1つの正確なパターンになり、同じ幅でデコードすると元の整数へ戻ります。

実際の作業で正確な表現をご利用ください

ファームウェア開発者は、センサーの差分、状態レジスター、プロトコル例を文書へ記載する前に確認できます。アプリケーション開発者は、符号付きバイトのパッキング用に基準データを作成し、境界動作を確認し、予想外に大きな符号なし値が実際には負の2の補数なのかを調査できます。

学習者は、符号拡張を隠す短縮バイナリではなく、固定幅の正確なパターンを見ながら計算を確認できます。計算は決定論的で、解析処理内だけで実行され、モデル、外部サービス、乱数、時計を使用しません。調査対象の保存形式と宣言幅を必ず一致させてください。

符号付きレジスター値の確認

文書化された10進数の境界値や例を正確な幅のビットパターンへ変換し、ハードウェアやファームウェアのレビューに使用できます。

シリアライザー用テストデータの作成

正値、負値、最小値、最大値、ゼロについて安定したバイナリの期待値を生成できます。

指定した幅にはどの範囲が収まりますか?

wビット幅では、-2^(w-1)から2^(w-1)-1までの符号付き整数を格納できます。

バイナリ入力を幅と完全に一致させる必要があるのはなぜですか?

その幅の先頭ビットが符号を決めるためです。幅の推測や暗黙の埋め合わせは結果を変える可能性があります。

整数が幅に収まらない場合はどうなりますか?

折り返したり切り詰めたりせず、分かりやすいエラーになります。たとえば8ビットでは-128から127までしか受け付けず、範囲外の値は上位ビットを失う前に拒否されます。

負の数はどのように符号化されますか?

値に2の幅乗を足し、その結果を2進数で書きます。正の数の全ビットを反転して1を足す手順と同じ結果になり、そのため8ビットの-18は11101110になります。

ビット列を数に戻すにはどうしますか?

まずビット列を符号なしの数として読みます。左端のビットが0ならそれが答えで、1なら2の幅乗を引きます。こうして8ビットの11101110は-18に戻ります。

このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。

POSThttps://api.kit.forhosting.com/dev2/two-complement-convert

Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。

curl -X POST https://api.kit.forhosting.com/dev2/two-complement-convert \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"mode":"integer_to_binary","bits":8,"integer":-18,"binary":"11101110"}'
{
  "mode": "integer_to_binary",
  "bits": 8,
  "integer": -18,
  "binary": "11101110"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "dev2.two_complement_convert",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。

1リクエストあたり$0.002

単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。

min_bits2
max_bits53
HTTPコード意味
401unauthorizedAPIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。
402insufficient_balance残高が不足しています。チャージ後に再度お試しください。
404unknown_type指定されたタスクタイプは存在しません。タイプ名を確認してください。
429rate_limitedリクエストが多すぎます。しばらく待ってから再度お試しください。

そのため、1つの符号ビットでフィールド全体の意味が変わる場面でも、学習、デバッグ、文書作成、自動テスト用データの生成に安心してご利用いただけます。

実際の作業で正確な表現をご利用ください

この機能は、人が読める10進値と低水準の符号付きフィールドを比較する場面で役立ちます。自動化する場合は、モード、幅、対応する整数またはバイナリのフィールドをAPIへ送信してください。成功した各項目には公開基本料金$0.002が適用されます。プロトコルが12ビットのフィールドを定義している場合は、先頭の0または1を含む12桁すべてをデコードします。

プロトコルキャプチャーのデコード

固定幅のバイナリフィールドを、プロトコル仕様が意図する符号付き整数として解釈できます。

整数が幅に収まらない場合はどうなりますか?

許容範囲を示すinvalid_inputエラーになります。値を暗黙に折り返したり切り捨てたりすることはありません。

双方向に変換できますか?

はい。integer_to_binaryで符号付き整数をエンコードし、binary_to_integerで固定幅パターンをデコードします。

APIリクエストの料金はいくらですか?

成功したAPI項目には公開基本料金$0.002が適用されます。無効な入力は結果を生成する前に拒否されます。

KITの完全なドキュメントを見る →