ForHosting KIT · 数学

ビット演算計算機

60 AND 13は12、60 OR 13は61、60 XOR 13は49です。2つの32ビット整数をAND、OR、XORやシフトで組み合わせると、C、Java、JavaScriptと同じ結果が、2つの数と並んで表示されます。ブラウザで無料で使えます。

  • 無料
  • ブラウザで動作
  • 登録不要
  • データは端末の外に出ません
ご利用方法 ウェブAPIメールTelegramアプリ 近日
入力した場合
A
60
B
13
Op
Xor
結果
結果
49

C、Java、JavaScript と同じ 2 の補数セマンティクスに従うため、返される数値はお客様のコードが計算する結果と一致します。浮動小数点の丸めも予期しない動作もありません。両方のオペランドは結果とともに返され、真の 32 ビット整数でない入力は、黙って切り捨てられるのではなく、明確なエラーとして課金なしで拒否されます。

ビット演算が実際に行うこと

ビット演算計算機は、整数の 10 進表記ではなく 2 進表現に対して処理を行います。たとえば 60 AND 13 を計算すると、マシンは両方の数値のビット(111100 と 001101)を並べ、両方のオペランドに 1 がある位置だけに 1 を残し、結果は 12 になります。

OR はどちらかに 1 があれば 1 を残すので 61、XOR はビットが異なる位置だけに 1 を残すので 49 になります。結果は 2 つの入力だけに依存するため、ビット演算は完全に決定的です。同じ整数のペアは、32 ビットの 2 の補数整数を使うどのマシン・どの言語でも常に同じ答えを返します。

2 つの整数と演算名を送れば、お客様のコードが計算するのと同じ整数が返され、両オペランドも一緒に返されるため、ログや監査証跡でも応答が自己記述的になります。

シフト、符号ビット、32 ビットセマンティクス

シフトは、第 1 オペランドのすべてのビットを、第 2 オペランドで指定した量だけ左右に移動します。n ビットの左シフトは 2 の n 乗を掛けるのと同じで、上位からはみ出したビットは破棄されます。小さな 2 のべき乗を扱う定番の高速手法です。

右シフトには 2 種類あり、その違いは重要です。算術右シフト shr は空いた位置に符号ビットをコピーするため、負の数は負のままです。たとえば -8 を 1 ビット右にシフトすると -4 になります。

論理右シフト ushr は代わりに 0 を挿入し、値を符号なしとして再解釈します。JavaScript と Java の慣例に従い、シフト量の下位 5 ビットだけが使われるため、33 シフトは 1 シフトと同じです。

両方のオペランドはビットに触れる前に真の 32 ビット整数として検証され、範囲外や整数でない入力は、警告なしに切り捨てられるのではなく拒否されます。

実際の使い方

2 つの整数 a と b、そして演算 op(and、or、xor、shl、shr、ushr のいずれか)です。応答は演算と両オペランドを整数の結果と並べて返すため、呼び出しを再構築せずに保存・記録できます。エッジで動くのと同じコードが、このページではブラウザ内で無料で動作します。

信頼できないデータを取り込むパイプラインに直接組み込んでも安全です。同じ入力は常に同じ結果を返し、お客様のデータがサーバーに残ることはありません。

言語間でのシフト演算の検証

低レベルコードを移植する前に、符号付き右シフトや論理シフトの結果を確認し、符号のバグが本番に出るのを防ぎます。

対応している演算は何ですか?

AND、OR、XOR、左シフト(shl)、算術右シフト(shr)、論理右シフト(ushr)です。

受け付ける入力範囲は?

両オペランドとも符号付き 32 ビット範囲(-2147483648 〜 2147483647)の整数である必要があります。

シフトで負の数はどう扱われますか?

shr は符号ビットをコピーするため負の値は負のままです。ushr は 0 で埋め、値を符号なしとして扱います。どちらも 32 ビットの 2 の補数セマンティクスに従います。

31 を超えるシフトをするとどうなりますか?

JavaScript や Java と同様、シフト量の下位 5 ビットだけが使われます。33 シフトは 1 シフトと同じです。

特定のフラグのビットが立っているか確かめるには?

そのビットだけを1にしたマスクと値をANDで組み合わせます。結果が0でなければ、そのフラグは立っています。同じ考え方で、ORならフラグを立て、XORなら反転できます。

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

POSThttps://api.kit.forhosting.com/math/bitwise

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

curl -X POST https://api.kit.forhosting.com/math/bitwise \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"a":60,"b":13}'
{
  "a": 60,
  "b": 13
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "math.bitwise",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

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

1リクエストあたり$0.002

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

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

このビット演算 API は、AND、OR、XOR、左シフト、算術右シフト、論理右シフトのいずれかのビット演算を 2 つの 32 ビット整数に適用し、正確な整数の結果を返します。

ビット演算が実際に行うこと

これら 3 つの演算は、フラグフィールド、権限マスク、サブネット、ハッシュ関数、圧縮フォーマットの基本要素です。これがまさにこのエンドポイントの約束です。

シフト、符号ビット、32 ビットセマンティクス

パックされたワードからビットフィールドを取り出すときに必要な動作です。

実際のエンドポイントの使い方

リクエストは 3 つのフィールドです。つまり、マスクを試作したりシフトを手で確認したりするのは無料で、自動化したときだけ API 経由で $0.002/リクエストをお支払いいただきます。オペランドが欠けている、整数でない、符号付き 32 ビット範囲外のいずれかの場合、エンドポイントは invalid_input エラーを返し、その呼び出しは課金されません。リクエスト間に状態はなく、何も保存されません。

パックされたフラグと権限マスクのデコード

AND、OR、XOR で、ビットが立っているかの確認、フラグのクリア、ロールフィールドの権限ビットの結合が、使い捨てスクリプトなしで行えます。

2 進表現の教育とデバッグ

学生やチームメイトに、2 つの整数がビットごとにどう結合されるかを、ブラウザと API で同じ結果とともに正確に示せます。

料金はいくらですか?

$0.002/リクエストです。このページでは、まったく同じコードをブラウザで無料実行できます。

何か保存されますか?

いいえ。各リクエストは計算後に破棄され、呼び出し間に状態はありません。

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