飽和整数加算計算機
2つの整数の和を決まったビット幅に収めます。符号付き8ビットで100 + 50を計算すると、負の数に回り込まずに127で止まり、正確な和の150も並べて表示されます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- A
- 100
- B
- 50
- ビット数
- 8
- 結果
- 127
- Min
- -128
- Max
- 127
- 正確な合計
- 150
飽和整数加算は、二つの整数の数学的な和を、選んだ固定幅ワードに収まる極値へクランプし、モジュラ算術や多くの機械整数型のようにラップアラウンドさせません。DSP カーネル、ゲームのダメージ式、カラーチャネル、安全カウンタを検証する技術者には、正確な最小値・最大値と明確な saturated フラグで示されたクランプ動作が必要です。ラップアラウンドオーバーフローと飽和を比較する学習者には、モジュラ結果を決して捏造しない決定的なオラクルが必要です。本飽和整数加算計算機は加算数 a と b、二から六十四までのビット幅、任意の signed フラグを受け取り、クランプ済み結果、クランプ前の正確な和、表現可能範囲、オーバーフローまたはアンダーフローによる飽和が起きたかを返します。
飽和加算がラップアラウンドオーバーフローとどう違うか
通常の固定幅整数加算はモジュラです。真の和が表現可能区間を外れると、機械結果は和を二の幅乗で剰余を取ってラップし、大きな正の値から大きな負へ、あるいはゼロ直下から大きな正へ飛び得ます。飽和加算は、多くの DSP 命令セット、メディアコーデック、安全重要カウンタが好む別方針を取ります。
真の和が表現可能な最大より大きければ結果はその最大、最小より小さければ結果はその最小、そうでなければ結果は真の和に等しく、モジュララップは起きません。符号付き幅 w ビットでは閉区間はマイナス二の (w−1) 乗から二の (w−1) 乗マイナス一まで、すなわち int8・int16・int32 の古典的な二の補数範囲です。
符号なし幅 w では区間はゼロから二の w 乗マイナス一までです。本計算機はそのクランプを正確に実装します。
飽和加算が役立つ場面
組込みおよび DSP 開発者は、単一の算術検査のために完全なエミュレータを立てずに、ARM QADD 風の挙動、メディアパイプライン段、固定小数点アキュムレータを写すために飽和加算を使います。ゲームやシミュレーションの作者は、ほぼ満タンのバーがオーバーフローで負やゼロ近傍へラップしないよう、体力・ダメージ・リソースカウンタをクランプします。
カラーと音声のツールは、シェーダコードに確定する前にブレンドモードをプレビューする際、八または十六ビットでチャネルやサンプルの和を飽和させることがよくあります。整数の計算機表現を教える教育者は、int8 から int64 までの再現可能な数値で、モジュララップと飽和の対比が必要です。検証失敗は残高を消費しません。
要求を小さく保ち、テストで result と saturated を固定すれば、固定幅算術表を再発明せずに宿題・CI オラクル・エッジワーカー向けの再現可能なクランプが得られます。
活用例
DSP・固定小数点ファームウェア検査
完全なエミュレータなしで QADD 風カーネルや固定小数点アキュムレータをモデル化する際、int8/int16/int32 境界に対して飽和加算を検証します。
ゲーム・シミュレーションのリソースクランプ
オーバーフローが負値へラップする代わりに最大で飽和するよう、体力・ダメージ・スコアの和を選んだビット幅でクランプします。
よくある質問
飽和整数加算は通常のオーバーフローとどう違いますか?
通常の固定幅加算はラップします(モジュラ算術)。飽和加算は真の和を、選んだ bits と符号の表現可能な最小または最大へクランプし、決してラップしません。
対応するビット幅と符号モードは?
bits は 2 から 64 の整数である必要があります。signed の既定は true(二の補数範囲)です。
saturated と direction の意味は?
結果がクランプされたとき saturated は true です。direction は和が max を超えたら overflow、min 未満なら underflow、クランプ不要なら none です。
a や b がワード範囲外でもよいですか?
はい。 オペランドは任意の安全な整数で構いません。和だけがワードの min/max へクランプされます。範囲外入力を試す計算機・教育用途に合います。
回り込ませずに上限で止めるのはなぜですか?
回り込んだ結果は大きな正の値から大きな負の値へ急に跳ぶことがあり、音声や色のチャンネル、安全カウンタでは思わぬ不具合になります。上限や下限で止めれば、多くのDSPの命令セットやメディアコーデックと同じ振る舞いになります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/dev/saturating-add \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"a":100,"b":50,"bits":8}'const res = await fetch("https://api.kit.forhosting.com/dev/saturating-add", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"a": 100,
"b": 50,
"bits": 8
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/saturating-add",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"a": 100,
"b": 50,
"bits": 8
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/saturating-add", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"a":100,"b":50,"bits":8}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"a":100,"b":50,"bits":8}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/saturating-add", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"a": 100,
"b": 50,
"bits": 8
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.saturating_add",
"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 | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
飽和加算がラップアラウンドオーバーフローとどう違うか
a と b の正確な整数和を BigInt 算術で作り、選んだ bits と符号の min・max と比較し、クランプ済み結果に加え saturated ブールと none・overflow・underflow の direction フィールドを返すため、呼び出し側は境界を再計算せずに記録や分岐ができます。
入力契約、応答形、エラー時の振る舞い
任意の signed は符号付き二の補数ワードでは既定で true です。ゼロから始まる符号なし範囲には signed を false にしてください。true・false・yes・no・signed・unsigned のような真偽風文字列も便宜上受け付けます。飽和・非飽和の両経路を固定する単体テストと応答を組み合わせれば、クランプロジックの回帰がファームウェアモデルやゲームバランス表へ入り込みません。必須フィールド a と b を有限整数(JSON 数値、または先頭符号付きの数字列)として、絶対値が Number.MAX_SAFE_INTEGER 以内に収まるように、bits を二から六十四の整数として JSON 本体を POST してください。欠落フィールド、非整数、二から六十四の外の bits、非真偽の signed は invalid_input で問題を示して失敗し、課金されません。成功時は本体が a・b・bits・signed をエコーし、ワードの min と max、クランプ前の数学的和 sum_exact、クランプ値 result を報告し、クランプ時は saturated を true にし、direction を none・overflow・underflow に設定します。範囲端点や正確な和で JavaScript の安全整数を超える値は、JSON の正確さを保つため十進文字列として出力されます。例:a が百、b が五十、bits が八、signed true なら min はマイナス百二十八、max は百二十七、sum_exact は百五十、result は百二十七、saturated true、direction overflow となり、古典的な int8 飽和加算です。
飽和整数加算 API が役立つ場面
公開計算機と API により、そのクランプ規則を設計文書でレビューできます。実装は純粋な parse ティア A のため、成功した各呼び出しはモデルトークンも外向きネットワークもなく、公開された基本価格 $0.002 です。
連携の活用例
授業デモ:オーバーフロー対飽和
幅 2–64 のいずれについても、決定的な min・max・sum_exact・result でモジュララップと飽和クランプの違いを学習者に示します。
技術的な質問
飽和整数加算計算機の料金は?
ブラウザツールは無料です。API 要求は成功した呼び出しごとに前払い KIT 残高から $0.002 です。無効入力は課金されません。