【中級編】GX Works3 除算演算符号有り/・無し/_Uを理解する

f:id:vv_6ong_3ka_cp:20210503173000p:plain

GX Works3から除算演算で符号有り・無しを区別できるようにプログラムできます

除算で符号有り・無しをなぜ区別したいか。それはあなたが自分で使用しているワードデータレジスタをどのように扱っているかが重要であり、符号を使用しようと思っていないものに対して符号有りを使用して除算してしまうとマイナスを考慮した演算結果が出力されてしまいます。

これはデータレジスタの特性として仕方ないのですが、16bitなら16bit目、32bitなら32bit目のビットONがどのように処理されるかが重要であり、16bitの16bit目、32bitなら32bit目がマイナス表示になるか、それともプラス表示になるかでデータレジスタの表示範囲が異なるためだからです。

データレジスタに限りがなければマイナスだろうがプラスだろうが、符号有り除算を行えば問題ないのですが、データレジスタにはビットに限りがあるため、最終ビットがONした際にどのようにデータレジスタをプラス・マイナスで処理するかによって演算処理を区別する必要があります。

今回はGX Works3の除算演算符号有り/・無し/_Uを紹介します。


広告


除算演算 /:符号有り /_U:符号無し

BIN16ビット除算 解説①
f:id:vv_6ong_3ka_cp:20210503164747p:plain

Point./_U:符号無し除算 /:符号有り除算

除算にも符号有りと無しがあるため区別して行うようにする。

BIN16ビット除算 解説②
f:id:vv_6ong_3ka_cp:20210503164756p:plain

Point.除算は0で割らないようにする

GX Works3除算 参考プログラム
f:id:vv_6ong_3ka_cp:20210503165806p:plain

Point.D10がインクリメントされていき、D0の数値が1秒ごと変化する

GX Works3除算 参考プログラムシミュレーション
f:id:vv_6ong_3ka_cp:20210503165837g:plain

Point.D0の数値が/_Uと/で演算結果D2とD4が異なることを確認する

まとめ
・/_U:符号無し除算 /:符号有り除算
・除算は0で割らないようにする
・参考プログラムシミュレーション動画では、D0の数値が/_Uと/で演算結果D2とD4が異なることを確認する