【チラシのうら 5日目】比較・論理演算を使えるようにしてみる
計算だけでは条件判定(IF文とか)が作れないので比較・論理演算もきるように拡張してみました。
<、<=、>、>=、<>、= の比較演算子と
AND、OR、XOR、NOT の論理演算子です。
逆ポーランド記法の評価対象にコレラを含め、評価順序を設定します。
評価結果はINT型で TRUE = 1、FALSE = 0 です。
一般的(?) なBASICの判定と異なる気がしますが、Javaのtrue/falseの定義値を参考にしました。
AND、OR、XOR、NOT は整数型のビット演算としても機能するようにしました。
5 AND 1 = 1
2 OR 4 = 6
になる感じです。
バグの元…な気がしなくなくもないですが…
そこはまぁ、気を付けてもらうって事で… (;^ω^)
------------------------
M5Z-80 BASIC Ver.0.1
------------------------
READY.
---- utf8 でエンコードされたメッセージを送信しました: "PRINT 5<>3" ----
PRINT 5<>3
1
READY.
---- utf8 でエンコードされたメッセージを送信しました: "PRINT 5<>3 AND 7<3" ----
PRINT 5<>3 AND 7<3
0
READY.
---- utf8 でエンコードされたメッセージを送信しました: "PRINT 7 AND 3" ----
PRINT 7 AND 3
3
READY.
---- utf8 でエンコードされたメッセージを送信しました: "PRINT 3 OR 6" ----
PRINT 3 OR 6
7
READY.
---- utf8 でエンコードされたメッセージを送信しました: "PRINT 7 XOR 3" ----
PRINT 7 XOR 3
4
READY.
IF文などでのTRUE/FALSE判定は TRUE≠0 FALSE=0 になります。
論理判定とビット演算を同じ演算子で処理する都合なので仕方ないかと
ここまでの成果
- 比較演算子が使えるようになった
- 論理演算、ビット演算ができるようになった
| 固定リンク
「BASIC」カテゴリの記事
- 【チラシのうら 42日目】約3倍 高速化しました。(2026.08.30)
- 【チラシのうら 41日目】便利だわ GitHubCopilot(2026.08.29)
- 【チラシのうら 40日目】実行中間コード化(2)(2026.08.25)
- 【チラシのうら 39日目】実行中間コード化(2026.08.22)
- 【チラシのうら 37日目】SDカードユニットの交換で問題解決(2026.08.13)
この記事へのコメントは終了しました。

コメント