PascalScritに SAR演算子 を追加する
私はwindowsの開発ツールでDelphiが好きでした。C系も書けますが、私は性格がいい加減なのでC系統だと他人に読めないどころか後から自分でも分からないコードを作ってしまいます。Pascalだと型に厳格で書き方に多様性が少ない分、内容に拘れるとも言えます。動けば良いという感覚で書いても後からある程度は読めますから。ただPascalの唯一の欠点は SAR演算子が無いことです。 C言語のシフト演算なら符号付きの場合SARをしてくれるのにと、何度も思いました。何故 SAR が欲しいのか-1 SHR 1 の結果は予想出来るでしょうか? 正の最大数になります。まあそれを利用してintサイズを知るという事も出来るのですがC言語なら -1>>1 は -1 ですし -2>> 1も-!ですSAR演算が昔は 整数除算の DIV で代用出来ました。x SHR 1を x DIV 2と書けたのです コンパイラが DIV 2を SAR 1 と変換してくれたのです。ところが何時のころからか DIVで代用出来なくなりました。今の時代は -1 DIV 2 は 0になるのです。 何が問題なのかというと、-3,-2,-1,0,1,2,3 を DIV 2すると -1,-1, 0, 0, 0, 1, 1 SAR 1すると -2,-1, -1, 0, 0, 1, 1 アセンブラとかCで書いたデジタルフィルタとは DIV 2で代用すると期待してるより振幅が小さくなってしまうのです。シミュレータとして無視出来ない問題です。さて、Lazarusに組み込まれているPascalScript
0