はじめに
みなさん、半導体設計時の計算機には何を使用しているでしょうか? Windows付属の電卓? まあまあ使いやすいのですが、筆者にとっては致命的な欠陥があります。それは64bitまでしかサポートしていないこと。
アプリケーションにもよりますが、ASICの設計では128bit越えの演算なども使用することもありますのでこれはいただけません。
そこで自分のニーズにあった電卓プログラムを作成してみましたので、その紹介をしたいと思います。
特徴
- Python3で書いたよ
- 結果は常に10進、16進、2進の3種類で表示するよ
- 桁数に制限はないよ。100桁でも1000桁でもコンピュータのリソースが許す限り対応するよ
- 入力は2進、10進、16進を受け付けるよ。任意の場所で'_'で区切っていいよ
- 結果が負の場合は16進、2進表示は2の補数として表示するよ
- Python 3がint型に対して持っている全ての演算をサポートするよ (演算部分はPythonに丸投げしているよ)
- 結果が小数を含む場合は、16進、2進表示は切り捨てて表示するよ
- カーソルキーやCtrl-p, Ctrl-nなどで入力のヒストリを辿ることができるよ
デモ
Lcalc > 0x3ff * 10 + 0b111_0010
(DEC) 10,344
(HEX) 0000_2868
(BIN) 0000_0000_0000_0000_0010_1000_0110_1000
Lcalc > 1024 * -1
(DEC) -1,024
(HEX) ffff_fc00
(BIN) 1111_1111_1111_1111_1111_1100_0000_0000
Lcalc > 0xffff_ffff * 0xffff_ffff * 0xffff_ffff
(DEC) 79,228,162,458,924,105,385,300,197,375
(HEX) ffff_fffd_0000_0002_ffff_ffff
(BIN) 1111_1111_1111_1111_1111_1111_1111_1101
0000_0000_0000_0000_0000_0000_0000_0010
1111_1111_1111_1111_1111_1111_1111_1111
Lcalc > 11 >> 1
(DEC) 5
(HEX) 0000_0005
(BIN) 0000_0000_0000_0000_0000_0000_0000_0101
Lcalc > 25 / 3
(DEC) 8.333333333333334
(HEX) 0000_0008
(BIN) 0000_0000_0000_0000_0000_0000_0000_1000
#入手法
以下にて公開しています。
https://github.com/triggerfish-mongara/lcalc