平衡三進数計算機
この平衡三進数計算機は、通常の十進整数を、マイナス 1、0、プラス 1 の値を持つトリットによる三進表現へ変換します。各トリットは -, 0, + で表します。また、その表記から整数へ戻すこともできます。結果には標準形だけでなく、符号付きの 3 のべき乗による展開、トリット数、0 でないトリット数、符号を反転した表現も表示されます。数体系の学習、アルゴリズムの検算、符号付き桁が特定の演算やハードウェア設計を簡潔にする理由の理解に役立ちます。
無料で実行
平衡三進表現の読み方
平衡三進法は 3 のべき乗を使う位取り記数法ですが、各桁はその位の値に -1、0、+1 のいずれかを掛けた寄与を持ちます。この計算機では、それらのトリットを -、0、+ と表記します。右から左へ、位の値は 3^0、3^1、3^2 と増えていきます。表示される展開式では、各桁の寄与を明示的に確認できます。たとえば 3^3 の位置にあるプラスのトリットは +27、3^2 の位置にあるマイナスのトリットは -9 を表します。0 でない寄与をすべて足すと十進整数が得られます。通常の負の三進数とは異なり、負の平衡三進数には独立した符号が不要です。負の寄与が各トリットに既に組み込まれているためです。変換結果は余分な先頭の 0 を除いた一意の標準形となり、ゼロは 0 一文字で表します。復号するときは +、0、- だけからなる連続した文字列をご入力ください。十進結果は常に安全な整数として正確に扱われ、浮動小数点の丸めは発生しません。
十進整数を変換する仕組み
符号化では、3 で繰り返し割りながら平衡化した余りを求めます。通常の余りは 0、1、2 のいずれかですが、平衡三進法では余り 2 を -1 に置き換え、次の位へ +1 を繰り上げます。2 は -1 に 3 を加えた値だからです。そのため、余り 0 なら 0、余り 1 なら +、余り 2 なら繰り上げ後に - を出力します。この規則は正と負の両方の整数に適用でき、任意の安全な整数を最終的にゼロまで縮小します。復号では逆の処理を左から右へ行い、それまでの値を 3 倍してから現在のトリット値を加えます。どちらの処理も内部では正確な整数演算を使用します。結果にはトリットの総数と、0 でないトリットの個数も含まれます。後者は、0 の位置が寄与しない疎な符号付き桁表現を調べる際に便利です。安全な範囲外の値、不正な十進表記、分数、指数、途中の空白、未対応の記号は入力エラーとして拒否されます。
符号付きトリットが演算を簡潔にする理由
最も分かりやすい利点は負数化です。すべての + を - に、すべての - を + に交換し、0 はそのまま残すだけで符号を反転できます。独立した符号ビットも、固定語長に対する補数演算も必要ないため、計算機は反転済みの表現を直接返します。符号付き桁では正と負の量が対称になるので、減算の説明や、近い 3 のべき乗を選んで負のトリットで差を補うアルゴリズムにも役立ちます。加算中に繰り上がりが生じる場合はありますが、平衡化された桁には対称な局所規則があり、特定の演算設計では一方向へ長く続く繰り上がりを減らせます。0 でないトリット数からは、定数倍を 3 のべき乗の加算と減算で表し、0 の位置を省けることも分かります。平衡三進法は二進法を常に置き換えるものではなく、あらゆる機器で高速化を保証するものでもありません。本計算機は、数体系の授業、符号付き桁の実験、プログラミング演習、手計算の検証に適した正確な確認用ツールです。
活用例
符号付き位取り記数法を学ぶ
独立した符号を使わず、負の寄与と 3 のべき乗がどのように整数を表すか確認できます。
変換コードを検証する
実装結果を、決定論的な十進値、標準トリット、展開式、負数表現と比較できます。
演算表現を研究する
疎な定数、減算、平衡型ハードウェアを調べる際に、非ゼロトリットと符号反転を確認できます。
よくある質問
この計算機ではどの記号を使いますか?
+ はプラス 1、0 はゼロ、- はマイナス 1 を表します。各位置は 3 のべき乗に対応します。
負の平衡三進数はどのように入力しますか?
表現の中にマイナスのトリットを使用してください。独立した先頭符号はなく、文字列には +、0、- だけを使います。
余り 2 がマイナスのトリットになるのはなぜですか?
2 は -1 と、繰り上げる 3 の組として書けるためです。現在のトリットを - とし、次の位置を一つ増やします。
負数化はどのように行いますか?
各位置の + と - を交換し、0 は変えません。結果は negated_balanced_ternary フィールドに表示されます。
対応する値の範囲はどこまでですか?
十進入力と復号結果は、JavaScript の安全な整数の負側と正側の限界値の範囲内である必要があります。
料金はいくらですか?
このページではブラウザー内で無料実行できます。API リクエストは 1 項目につき $0.002 です。
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/dev/balanced-ternary \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"value":"42","direction":"to_balanced_ternary"}'const res = await fetch("https://api.kit.forhosting.com/dev/balanced-ternary", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"value": "42",
"direction": "to_balanced_ternary"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/balanced-ternary",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"value": "42",
"direction": "to_balanced_ternary"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/balanced-ternary", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"value":"42","direction":"to_balanced_ternary"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"value":"42","direction":"to_balanced_ternary"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/balanced-ternary", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"value": "42",
"direction": "to_balanced_ternary"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.balanced_ternary",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_abs | 9007199254740991 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |