エンコーダー用グレイコード・2進数変換計算機
グレイコード0111は2進数の0101、10進数では5になります。エンコーダーが出力した値を接頭辞0bの有無にかかわらず貼り付けると、同じ桁数のまま先頭のゼロも残した2進数が得られます。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- グレイコード
- 0111
- 2進数
- 0101
- 10進数
- 5
- ビット幅
- 4
反射グレイコードでは隣り合う位置の間で変わるビットが1つだけなので、ロータリーエンコーダーやリニアエンコーダーの遷移時に曖昧な読み取りを抑えられます。センサー側では便利ですが、通常のソフトウェア処理には標準2進数が必要です。この計算機は最上位ビットから最下位ビットまで正確なXOR連鎖を適用し、グレイ符号化を逆変換します。整形式のビット列を受け取り、先頭のゼロと幅を維持して、2進数と10進値を返します。
反射グレイコードを戻す累積XORの仕組み
反射グレイコードは、隣接する数値位置の差が必ず1ビットになるように並べられています。この性質により、通常の2進数で複数ビットが同時に切り替わる場面でも、エンコーダーを大きく離れた位置として誤読する可能性を減らせます。復号は最上位側から始めます。
最初の2進ビットには最初のGrayビットをそのままコピーします。それ以降の2進ビットは、直前の2進ビットと現在のGrayビットのXORです。言い換えると、各位置は左端からその位置までのGrayビットすべてのパリティです。
Gray 0111では累積パリティが0、次に1、次に0、最後に1となり、2進数0101が得られます。本機能は、符号付き32 bits演算に制限されるJavaScriptの整数ビット演算ではなく、文字を順番に処理します。そのため、固定幅のエンコーダー語や長い学習例でも正確です。
対象は標準の2進反射グレイコードだけであり、平衡型、n進型、メーカー独自型には別の対応表が必要です。
診断、ファームウェア試験、データ処理での活用
卓上確認では、データシートに記載されたGray語またはレジスターから取得した値を貼り付け、binaryを機構の想定位置と比較してください。ファームウェア検証では、既知のGray入力と2進出力をテスト資料として保存し、C、Rust、プログラマブルロジック言語、PLC環境で実装したXOR処理の独立した判定基準として利用できます。
ネットワーク、乱数、時計、状態付きキャッシュを使わないため、同じ入力からは常に同じ出力が得られます。変換だけでは配線や故障を検査できず、周回、ギア比、物理単位も適用されません。decimalを実位置として扱う前に、メーカーが最上位ビットから送信し、標準2進反射グレイコードを採用していることをご確認ください。
活用例
ロータリーエンコーダーの卓上確認
取得したGray語を2進数と10進数へ復号し、公称ビット幅を保ったまま軸の想定位置と比較できます。
よくある質問
反射グレイコードを2進数に変換する方法は何ですか?
最上位Grayビットをコピーし、後続の各Grayビットと直前の2進ビットのXORを取ります。左から右への累積XORと同じです。
接頭辞0bを付けられますか?
はい。 先頭の0bまたは0Bは変換前に除去されます。その他の記号、区切り文字、内部の空白は拒否されます。
あらゆる種類のグレイコードに対応しますか?
いいえ。 標準2進反射グレイコード専用です。メーカー独自表、平衡型、非2進型は対象外です。
空白や区切り文字を含むグレイコードを貼り付けられますか?
いいえ。入力できるのは0と1だけで、接頭辞0bは付けても構いません。空白や区切り文字は事前にご自身で取り除いてください。文字を黙って削除すると、実際の位置がもっともらしい誤った値に変わるおそれがあるためです。
結果で先頭のゼロが残るのはなぜですか?
桁数そのものが意味を持つためです。12ビットのセンサー値は、数値が小さくても12ビットのまま扱われます。結果はグレイコードと同じ桁数で表示され、ビット幅も一緒に示されます。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/elec/gray-to-binary \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"gray_code":"0111"}'const res = await fetch("https://api.kit.forhosting.com/elec/gray-to-binary", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"gray_code": "0111"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/elec/gray-to-binary",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"gray_code": "0111"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/elec/gray-to-binary", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"gray_code":"0111"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"gray_code":"0111"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/elec/gray-to-binary", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"gray_code": "0111"
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "elec.gray_to_binary",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
制限
max_bits | 4096 |
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
ブラウザーでは無料で計算でき、同じ決定論的APIを成功1件あたり$0.002で利用できます。
反射グレイコードを戻す累積XORの仕組み
methodにはcumulative_xorが入り、利用した方式を自動処理で記録できます。
エンコーダー語の入力方法と応答項目の読み方
ファームウェア資料のリテラルをコピーする場合は、任意の接頭辞0bも使用できます。先頭のゼロは表示上重要なので保持されます。小さな値でも12 bitsのセンサー語は12 bitsのままです。厳密な検証により、文字を黙って削除して物理位置をもっともらしい別の値へ変えてしまう事故を防ぎます。区切り文字があるデータは、呼び出し前に明示的に除去してください。gray_codeには最上位ビットから並べた、ゼロと1だけの文字列を指定してください。gray、value、bitsという別名も認識しますが、正式な名前gray_codeが最も明確です。応答では正規化したgray_codeを再掲し、標準表現をbinaryに格納します。decimalは安全な範囲ならJSON数値、JavaScriptの正確な整数範囲を超える場合は10進文字列です。bit_widthは接頭辞を除いた実際のビット数を示し、methodは常にcumulative_xorです。空の入力、内部の空白、符号、ゼロと1以外の数字、公開上限4096 bitsを超える文字列はinvalid_inputになります。
診断、ファームウェア試験、データ処理での活用
データパイプラインでは、保存済みセンサー語を校正表と結合する前に復号し、gray_codeとbit_widthを追跡可能な元情報として残せます。APIの成功1件は$0.002で、ブラウザーではローカルかつ無料で実行できます。
連携の活用例
ファームウェアの回帰テスト
ホスト言語の32 bitsビット演算に依存せず、組み込みXORルーチンを試験する安定した基準値を作成できます。
センサーデータの正規化
保存済みGrayフィールドを校正や分析の前に変換し、正規化した元コードと変換方式を維持できます。
技術的な質問
先頭のゼロは保持されますか?
はい。gray_codeとbinaryは元の幅を保持し、その幅はbit_widthにも明示されます。
計算機の料金はいくらですか?
ブラウザー版はお使いの端末で無料実行できます。APIの成功1件は$0.002で、無効な入力は拒否されます。