2進数の掛け算計算機
この2進数掛け算計算機は、符号なしの2つの2進整数を乗算し、答えができる過程を表示します。乗数の各ビットについて、被乗数を正しい桁へシフトし、その行を加算するか省略するかを示したうえで、処理後の累積値を返します。結果には、正規化した両オペランド、すべての部分積、最終的な2進数の積、簡潔な式が含まれます。浮動小数点数へ変換せず2進文字列のまま計算するため、通常のマシン整数より長い入力でも正確です。
無料で実行
2つの2進整数を入力して結果を確認します
被乗数と乗数には、0と1だけで構成された文字列を指定してください。どちらにも0b接頭辞を付けられ、表示前に値へ影響しない先頭のゼロが取り除かれます。両方を符号なし整数として扱うため、符号、小数点、区切り記号、途中の空白は推測せずエラーにします。応答は正規化したオペランドから始まり、積、式、計算方式で終わります。その間のpartial_products配列は、乗数の最下位ビットから最上位ビットの順です。各行にはビット位置と値、シフト済み被乗数、加算または省略の操作、部分積、処理後の累積値が記録されます。そのため、最終回答をすぐ確認する用途にも、計算過程を一段ずつ検証する用途にも利用できます。右端から左へ進む順序は、通常の筆算とも対応しています。
シフト加算による部分積の仕組みを理解します
2進数の筆算は、乗数の各桁が0か1のどちらかなので明快です。位置0では被乗数を変更しません。位置1では末尾にゼロを1つ付けて左へシフトし、値を2倍にします。位置2ではゼロを2つ付けて4倍にし、上位の位置でも同じ規則を続けます。現在のビットが1なら、シフトした値を部分積として累積値へ加えます。0なら寄与はゼロとなり、その行を省略として記録します。ただし桁の対応と乗数中のゼロを明示するため、省略行も出力から削除しません。2進加算は右から左へ繰り上がりを処理し、10進変換や近似計算を行いません。accumulator_afterを順に読むと、シフト、選択、加算、反復というアルゴリズム全体を追跡でき、結果が異なる最初の段階も正確に特定できます。
授業やシステム検証で正確な計算を活用します
構造化された出力は幅広い場面で役立ちます。デジタル論理の授業では、各行を使って位取り記数法とシフトレジスター、加算器、単純な乗算器の制御判断を関連付けられます。プログラミング演習では、計算過程を1つの積に隠さず、独自のビット演算ルーチンを検査する基準値になります。デバッグ時には累積値を比較し、最初に異なる行のビット位置と部分積を調べることで、シフト位置の誤りを見つけられます。各ビットが1行を生成するため、応答サイズを予測可能に保つ入力上限がありますが、範囲内の演算は正確かつ決定的です。対話的な確認にはブラウザー版を無料で利用でき、教材作成、エミュレーター検証、HDLテストベクトル確認などの自動処理には1リクエスト$0.002でAPIを呼び出せます。
活用例
2進数の筆算を指導する
各ビットがシフト済み部分積を選び、累積和を変える様子を示します。
デジタル論理の課題を確認する
期待される各行をハードウェア乗算器、エミュレーター、HDLシミュレーションと比較します。
正確な算術コードをテストする
2進演算実装の単体テスト向けに、決定的な積と途中の累積値を生成します。
よくある質問
どのような入力形式に対応していますか?
0と1だけを含む符号なし文字列を指定します。0b接頭辞は任意ですが、符号、途中の空白、小数点は使用できません。
ゼロのビットに対応する行も表示するのはなぜですか?
ゼロは値を加えませんが、その行を残すことで桁位置を保ち、シフト済みの値を省略した理由を明確にできます。
途中で10進数へ変換しますか?
いいえ。2進文字列を直接加算するため、浮動小数点変換による精度低下は起こりません。
部分積はどの順序で並びますか?
右端の最下位ビットである位置0から始まり、左側の上位位置へ順番に進みます。
APIでの計算料金はいくらですか?
APIは1リクエストあたり$0.002です。対話型のブラウザー版はAPIを呼び出さずローカルで実行できます。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/elec/binary-multiplication \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"multiplicand":"1011","multiplier":"110"}'const res = await fetch("https://api.kit.forhosting.com/elec/binary-multiplication", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"multiplicand": "1011",
"multiplier": "110"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/elec/binary-multiplication",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"multiplicand": "1011",
"multiplier": "110"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/elec/binary-multiplication", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"multiplicand":"1011","multiplier":"110"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"multiplicand":"1011","multiplier":"110"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/elec/binary-multiplication", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"multiplicand": "1011",
"multiplier": "110"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.binary_multiplication",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_bits | 512 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |