基数の四則演算
変換処理はすべてブラウザ内で完結します。データは送信されません
2・8・10・16 進数で四則演算を行うツールです。 桁あふれの回り込みはしません。 16 進数の計算機には、結果を 32 ビットや 64 ビットで切り詰めるものがあります(`0xFFFFFFFF + 1` が `0` になる)。それはマシンの語長を模したもので、算術ではありません。計算機はまず「この 2 つの数を足すといくつか」に答えるべきです。マスクや回り込みが必要な場合はビット演算を使ってください。そこではビット幅が明示的なパラメーターで、剰余が目に見えます。 除算は商と余りを返し、黙って小数にはしません。 整数除算には世界で 2 つの流儀があります:0 方向への切り捨て(C 系、JavaScript の BigInt)と床関数(Python)です。`-7 ÷ 2` は前者で -3 余り -1、後者で -4 余り 1 になり、どちらも正しく、どちらが欲しいかによります。そこでこのツールはどちらにも与しません:割り切れないときは余りを並べて出します。 接頭辞は選択した基数より優先されます。 `0x` / `0o` / `0b` を書けばその基数として読みます。`0b1010 + 0xFF` のような混在はそれでしか表現できません。
機能
- 4 種類の演算:加算・減算・乗算・除算。負の数にも対応
- 入力と出力の基数を 2・8・10・16 からそれぞれ選べる(異なってもよい)
- 接頭辞優先:`0b1010 + 0xFF` のような混在を表現できる
- 除算は商を返し、割り切れないときは余りを併記(0 方向への切り捨て)
- 任意の大きさの整数で正確。`0xFFFFFFFF × 0xFFFFFFFF` も切り詰めません
- 結果が 10 進数でないときは 10 進の値も添えるので暗算が要りません
- 1 行に 1 オペランドなので、同じ数との演算を一括で行えます
- 入力では `_` と空白を区切りとして使えます
使い方
- 第 1 オペランドを 1 行に 1 つ貼り付けます
- 入力の基数と演算を選び、2 つ目のオペランドを入力します
- 必要なら出力の基数を別のものに変えます
- 行のコピーボタンで結果を取り出します
よくある質問
- 結果が回り込んだ大きな数ではなく負になるのはなぜですか?
- このツールが行うのは算術であり、マシンの語長の模擬ではないからです。`0x00 - 1` は `0xFFFFFFFF` ではなく `-0x1` になります。回り込みは実機の語長(32 ビットか 64 ビットか、それ以外か)に依存し、勝手に 1 つ選ぶのは推測になります。固定幅で剰余を取りたい場合はビット演算を使ってください。ビット幅を選べば減算がその幅で自然に回り込みます。
- 割り切れないときはどうなりますか?
- 商と余りの 2 つを返します。どちらも整数で、選んだ基数で表示されます。16 進数なら `FF ÷ 10` は `F` 余り `F` です(255 = 15 × 16 + 15)。これは「整数除算」に 2 つの流儀があり、負の数で答えが変わるためです(`-7 ÷ 2` は -3 余り -1 か -4 余り 1)。どちらにも与せず余りを渡せば、どちらの流儀でも使えます。
- 小数は扱えますか?
- 扱えません。理由は 2 つあります。0.1 は 2 進数では循環小数なので書ける形はすべて近似値です。また 16 進数の小数演算には共通の取り決めがありません。整数の四則演算で実際の需要のほとんど(アドレスのオフセット、マスク、色の値、プロトコルのフィールド)はカバーできます。小数が必要なら 10 進数の道具か普通の電卓を使ってください。
関連ツール
基数変換
変換2・8・10・16・36・64 進数を相互変換。6 通りの結果を一度に表示し、19 桁のスノーフレーク ID も正確に扱えます。すべてブラウザ内で処理します。
ビット演算
変換AND・OR・XOR・XNOR・NAND・NOR・NOT・左右シフト・ビット逆順の 10 種類。結果は 10 進・2 進・16 進で同時に表示します。
ハッシュ計算
エンコードMD5・SHA-1・SHA-256・SHA-512 のダイジェストを計算します(旧システム向けの MD4・MD2 も可)。日本語も UTF-8 バイトで計算します。
タイムスタンプ変換
変換Unix タイムスタンプと日時を相互変換。秒〜ナノ秒を桁数で判別し、小数・負数・Windows FILETIME にも対応します。
日付計算
変換2つの日付の差が何日かを計算し、日・週・月の加減算もできます。日付はカレンダーから選ぶか貼り付けで。終了日を空にすると今日と比較。
Cron 解析
変換cron 式をフィールドごとに日本語で説明し、次回と前回の実行時刻を計算します。絶対に実行されない式はその場で理由を示します。すべてブラウザ内で処理します。