Ex Calculator WX – 数式を編集できる16進数計算機

※2020/10/19 version 0.30 に更新。モードを変更するショートカットキーを「Alt+m」に変更しました。ビット制限下の Decimal モードにて、小数点以下の演算結果を10進数基準とするように変更しました。

数式を編集して計算することができる、16進数対応の計算機です。整数だけでなく小数も扱えます。数式の履歴を保存しており、選択して再計算することが可能です。

Windows10 (64bit) 専用で、当ソフトウェア単体で動作します。


1. 最新版ダウンロード (uploader.jp)

  • MD5: f2aa5482a3fc3fd7c9e0851df70d719c
  • SHA256: d0a04a344a969c4a619a755c652f724102789a34fec4ef62691ad8ac9d2f12a2

2. 使い方

2-1. インストール / アンインストール

ダウンロードしたファイルを任意の場所に解凍し、”ExCalculatorWX.exe” を実行してください。
Windows 10 (64bit) 環境で動作します。Python で作成していますが、使用環境には Python が導入されていなくても構いません。

アンインストールの際は、フォルダごと削除してください。レジストリは使用していません。

2-2. 基本仕様

ボタンまたはキーボードで数式を入力します。
「=」ボタンを押すか、キーボードから「Enter」を入力すると、解を求めます。
画面左端のトグルボタンで、解の表記を指定することができます。

主な演算子やボタンの仕様は以下の通りです。

+加算
減算
*乗算
**べき乗
/除算(結果は小数)
//商(結果は整数)
%剰余(結果は整数)
CAすべてクリア(Clear All)
CE数式をクリア(Clear Expression)
BSバックスペース

数式に10進数以外を入力するときは、先頭に「0x」「0o」「0b」を付けてください。それぞれ16進数、8進数、2進数に対応します。数式内で複数の進数表記を混在させても大丈夫です。

ボタンは、通常の「General」と、関数等を配置した「Extra」との2つのパネルがあります。適宜切り替えてご利用ください。

ANDビット演算子 &
ORビット演算子 |
XORビット演算子 ^
NOTビット演算子 ~
abs(x)x の絶対値
ceil(x)x 以上の最小の整数(正の数であれば切り上げと同義)
floor(x)x 以下の最大の整数(正の数であれば切り捨てと同義)
sin(x)サイン。角度 x をラジアンで指定。
cos(x)コサイン。角度 x をラジアンで指定。
tan(x)タンジェント。角度 x をラジアンで指定。
asin(x)アークサイン。結果はラジアン。
acos(x)アークコサイン。結果はラジアン。
atan(x)アークタンジェント。結果はラジアン。
sqrt(x)x の平方根。
pi円周率π。
rad(x)x 度をラジアンに変換。
deg(x)x ラジアンを度に変換。
e自然対数の底。
ln(x)自然対数。e を底とする対数。
log10(x)常用対数。10を底とする対数。
log2(x)2進対数。2を底とする対数。
exp(x)指数関数。e のべき乗。

sin などの角度指定がラジアンであることに注意してください。
例えば「sin30度」を計算したいときには、「sin(rad(30))」と入力してください。

また、解や各進数表記をクリックすると、数式に代入することができます
数式の履歴は32個まで保存しています。数式の右端の矢印を押せば履歴が開きます。

解を求めた後にもう一度「=」あるいは「Enter」を入力した場合には、自動で連続計算を行います。現在の解に、最後の演算子以降を付加して計算します。

2-3. ビットとモード

画面左下のコンボボックスで、ビットとモードを指定することができます。

ビット指定の「Auto」は制限なしです。ビット制限付きは「64bit(QWORD)」から「08bit(Byte)」まで選択できます。

モードの「Decimal」は10進浮動小数点算術をサポートしており、「1.1+2.2=3.3」のような小数演算を正確に行うことができます。

モードの「Signed」と「Unsigned」は、それぞれ符号付き / 符号なしの整数演算や、2進浮動小数点数の演算に用います。このモードでは「1.1+2.2=3.3000000000000003」となります。

以下に設定の組み合わせ例を載せておきます。一般的な計算機と同じような動作をするのは「Auto」と「Decimal」の組み合わせです。「Decimal」モードで整数演算を行った場合は、「Signed [整数]」と同様の動作になります。

ビット指定モード指定と結果用途
AutoDecimal [小数]10進浮動小数点算術。
Signed / Unsigned [小数]倍精度浮動小数点数 double。
Signed / Unsigned [整数]整数演算 (結果上限 256bit)。
64bit(QWORD)Decimal [小数]10進浮動小数点算術。小数点以下15桁まで。
Signed / Unsigned [小数]倍精度浮動小数点数 double。
Signed [整数]符号付き長整数型 long。
-9223372036854775808~9223372036854775807
Unsigned [整数]符号なし長整数型 unsigned long。
0~18446744073709551615
32bit(DWORD)Decimal [小数]10進浮動小数点算術。小数点以下7桁まで。
Signed / Unsigned [小数]単精度浮動小数点数 float。
Signed [整数]符号付き整数型 int。
-2147483648~2147483647
Unsigned [整数]符号なし整数型 unsigned int。
0~4294967295
16bit(WORD)Decimal [小数]10進浮動小数点算術。小数点以下3桁まで。
Signed / Unsigned [小数]半精度浮動小数点数。
Signed [整数]符号付き短整数型 short。
-32768~32767
Unsigned [整数]符号なし短整数型 unsigned short。
0~65535
08bit(Byte)Decimal [小数]10進浮動小数点算術。小数点以下1桁まで。
Signed [整数]符号付き1バイト整数型 char。
-128~127
Unsigned [整数]符号なし1バイト整数型 unsigned char。
0~255

2-4. キーボードショートカット

様々な操作はキーボードショートカットからも可能です。
おすすめは「Tab」キーで、ワンタッチで数式に解が挿入されます。また、「↓」で直前の数式を入力したり、「Esc」で数式をクリアしたりすることができます。

キーボードボタン動作
Enter=解を求める。
↑ / ↓なし数式を履歴から入力する。
Alt + ↑ / Alt + ↓数式欄右端の▼数式の履歴を開く。
Tab解をクリック解を数式に代入する。
;+数式に + を入力する。
:*数式に * を入力する。
Back SpaceBSバックスペース。
EscCE数式をクリアする。
Ctrl + wCAすべてクリアする。
Ctrl + hHex 解をクリック数式に16進数の解を代入する。
Ctrl + dDec 解をクリック数式に10進数の解を代入する。
Ctrl + oOct 解をクリック数式に8進数の解を代入する。
Ctrl + bBin 解をクリック数式に2進数の解を代入する。
Alt + hHex トグルボタン解の表記を16進数にする。
Alt + dDec トグルボタン解の表記を10進数にする。
Alt + oOct トグルボタン解の表記を8進数にする。
Alt + bBin トグルボタン解の表記を2進数にする。
Alt + tビットコンボボックスビット制限を切り替える。
Alt + mモードコンボボックスモードを切り替える。

3. 特殊な仕様

3-1. オーバーフローと右シフト

Auto 以外のビットを指定したとき、演算結果が表現可能範囲を超えるとオーバーフローします。
例えば 32bit(DWORD) を指定して「0xFFFFFFFF+1」を計算すると、結果は「0」になります。

また、Signed(符号付き)を指定したときの負数の右シフトは、入力値の表記によって結果が変わります。

10進数をシフトする際は算術シフト、それ以外では論理シフトが行われます。
算術シフトでは上位桁が符号で埋められるのに対し、論理シフトでは「0」で埋められます。これは、数式に入力された各数値を事前検証することが困難で、演算を行ってから指定ビットに収めているために起こります。

3-2. ビット演算子NOT (~)

Python のビット演算子NOTは、単純なビット反転ではありません。ビット指定を Auto にして制限をかけない場合、上位の桁が無限に続いていると想定して反転されます。そのため、「~0b0001」を計算すると「-0b10」になります。

「0b1110」という結果を得たい場合は、「~0b0001 & 0b1111」と入力してください。そうすると2の補数を計算することになります。

Auto 以外のビットを指定すれば桁数が制限されるため、単純なビット反転になります。
例えば 08bit(Byte) を指定してから「~0b11001100」を計算すると、「0b00110011」が得られます。

3-3. 浮動小数点数の表記

結果が小数になる場合、10進数以外は IEEE754 規格の交換形式で表記します。16進数のみ、C99 規格の16進浮動小数点リテラルも併記します。
交換形式はビット指定の影響を受けますが、16進リテラルは常に 64bit で処理します。

これらの交換形式を計算に用いることはできません。計算したいときは10進数で入力してください。
16進リテラルが単独で数式に入力された場合のみ、その結果を表示することができます。ただしサフィックスには対応していません。

3-4. Decimal モードの特殊な使い方

Decimal モードで結果が小数となる演算を行った場合、その結果が表現範囲内の有限小数であれば、10進数表記の欄に既約分数を併記します。数式に10進数以外が入力された場合には、この機能は働きません。

また、ビットに Auto 以外を指定すると、10進数における小数点以下の桁数を制限します。場合によっては、その方が正確な結果を得られることがあります。

例えば、sin(pi) の結果は本来 0 となるはずですが、通常通り計算すると 1.2246467991473532e-16 になってしまいます。円周率の精度を可能な限り上げてみても、この結果を 0 にすることは困難でした。

ビットを指定するとそれに応じて小数点以下を丸めるので、0 という結果を得ることができます。このとき、他の進数表記も10進数に合わせて計算されます。

4. 更新履歴

  • 2020/10/19 (version 0.30) ; モードを変更するショートカットキーを「Alt+m」に変更。ビット制限下の Decimal モードにて、小数点以下の演算結果を10進数基準とするように変更。ソースコード全般のリファクタリング。
  • 2020/08/20 (version 0.20) ; バッファオーバーラン対策を実施。10進浮動小数点算術をサポート。Decimal モードにて既約分数も併記するように変更。
  • 2020/08/12 (version 0.10) ; 公開。

Leave a comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

six − one =