Ex Calculator

※2020/08/12 後継版を作成しました。→ Ex Calculator WX

Expression (数式) を編集して計算することができる、16進数対応電卓です。キーボードからも入力できます。


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

ファイル内容

  • src
    • ExCalculator.pyw
  • ExCalculator.exe
  • LICENSE.txt
  • readme.md

2. 動作環境

  • ExCalculator.exe
    Windows 10 (64bit)
  • ExCalculator.pyw (srcフォルダ内)
    Python 3

zip を解凍し、”ExCalculator.exe” を実行してください。exe の実行に Python は不要です。
src フォルダには Python 3 導入下でのみ使える “ExCalculator.pyw” が入っています。exe も pyw も機能は同じですが、pyw の方が起動はわずかに早いです。

Mac で pyw を使用する際は、フォント「Consolas」を入れた方が良いでしょう。


3. 設定の変更

3-1. 初期設定ファイル

1度起動すると作成される “ExCalculator_settings.ini” を編集することで、初期設定を変更することができます。
ウィンドウの大きさや位置も指定しておくことができます。

Width=176
Height=68

3-2. ビットと符号

ボタンパネルの左上で、ビットと符号を指定することができます。設定の組み合わせ例を載せておきます。

ビット符号用途
Auto/通常の用途。
特に制限を設けずに演算します。
64bitSigned符号付き長整数型 long
-9223372036854775808~9223372036854775807
Unsigned符号なし長整数型 unsigned long
0~18446744073709551615
/倍精度浮動小数点数 double
32bitSigned符号付き整数型 int
-2147483648~2147483647
Unsigned符号なし整数型 unsigned int
0~4294967295
/単精度浮動小数点数 float
16bitSigned符号付き短整数型 short
-32768~32767
Unsigned符号なし短整数型 unsigned short
0~65535
/半精度浮動小数点数
8bitSigned符号付き1バイト整数型 char
-128~127
Unsigned符号なし1バイト整数型 unsigned char
0~255

4. 仕様の詳細

4-1. 演算の基本仕様

Ex Calculator は Python で作成しているため、演算も Python の仕様に従います。
ほとんどの場合ではこれを気にする必要はありませんが、負数の除算など、一部の演算で他の言語系と異なる結果が表示される可能性があります。

演算子の「**」はべき乗です。「x**y」は x の y 乗を求めます。特殊な使い方として、「x**0.5」とすると、x の平方根を求めることができます。
同様の構文で「//」は商を、「%」は剰余を求めます。

数式に10進数以外を入力するときは、先頭に「0x」「0o」「0b」を付けてください。それぞれ16進数、8進数、2進数に対応します。
数式内で複数の進数表記を用いることは問題ありません。

また、数式・結果ともに複素数には対応しておりません。ご了承ください。

4-2. オーバーフローと右シフト(>>)

ビットを指定したとき、演算結果が表示可能範囲を超えるとオーバーフローします。
例えば 32bit を指定して「0xFFFFFFFF+1」を入力すると、結果は「0」になります。

また、Signed(符号付き)を指定したときの負数の右シフトは、入力値の表記によって結果が変わります。
10進数をシフトする際は算術シフト、それ以外では論理シフトが行われます。算術シフトでは上位桁が符号で埋められるのに対し、論理シフトでは「0」で埋められるため、両者の結果は異なることになります。

これは、数式に入力された各数値を事前検証することが困難で、演算を行ってから指定ビットに収めているために起こります。

4-3. 三角関数と対数

ボタンは配置していませんが、三角関数と対数も組み込んであります。キーボードで数式に直接打ち込めば使えます。
使用できる表記や構文を載せておきます。

表記・構文説明
sin(x)サイン。角度 x をラジアンで指定。
cos(x)コサイン。角度 x をラジアンで指定。
tan(x)タンジェント。角度 x をラジアンで指定。
asin(x)アークサイン。結果はラジアン。
acos(x)アークコサイン。結果はラジアン。
atan(x)アークタンジェント。結果はラジアン。
pi円周率π。
rad(x)
radians(x)
x 度をラジアンに変換。
deg(x)
degrees(x)
x ラジアンを度に変換。
e自然対数の底。
ln(x)
log(x)
自然対数。e を底とする対数。
log10(x)常用対数。10を底とする対数。
log2(x)2進対数。2を底とする対数。
exp(x)指数関数。e のべき乗。

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

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

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

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

4-5. 演算結果について

数式の演算は原則として Python に任せていますが、ビット指定のオーバーフロー等、既定の関数として用意されていないものは自前で組み込んでいます。

私は数学の専門家ではないため、勘違いをしている部分があるかもしれません。もし結果が間違っているのを発見した場合はお知らせいただけると助かります。


5. 更新履歴

  • 2019/10/14 (version 0.20) ; 設定ファイル “ExCalculator_settings.ini” の構造を変更しました。
  • 2019/09/25 (version 0.10) ; 公開。

Leave a comment

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

sixteen − 12 =