ブール代数ブール代数コンピュータ的な考え方ブール(1815~1864)は論理学を数学のように全て記号で表わしました。自然言語の「そして」「または」「でない」をそれぞれ「AND」「OR」「NOT」と表わしたのですが、これはとても画期的なことでした。ブレーキを踏んでキーを回さないとエンジンスタートしない仕組みは、以下のように簡単明瞭に表現できます。ブレーキを踏んでいる/いないをPで表わし、キーを回す/回さないをQで表わします。Qが1の時、エンジンがかかることになります。これら論理演算の真理値表を以下に示します(後の説明のためにXORも示す)。rpnではANDは&、ORは:、XORは;、NOTは~と表記します。0このような、0と1で表現するブール代数はコンピュータ技術には欠かせないものです。論理学だけでなく、デジタルのハードウェア回路もブール代数で表現できます。rpnでブール代数を扱うrpnでは、この論理演算を2進、8進、10進、16進の数値に対して適用することができます。以下のように2進の1011bと16進の1fhを論理演算することができます(NOTは1011bを演算)。結果を10進として、それぞれ計算してみましょう。1011bのNOT(1の補数)-12このように、ブール代数も逆ポーランド記法で書くので、論理演算子は数値の後に配置されます。上記の式で何故、結果が11、31、20、-12のようになるのでしょうか。;と等価な式を、全て2進で表現して、結果も2進で得てみましょう。b10100bこれは、以下のようにそれぞれの桁の論理和を計算していることに等しいのです。0結果、10100bが10進では20になるわけです。4番目の例のNOTに関しては説明が難しくなりますが、rpnでは2進数を最大で、「11111111111111111111111111111111」まで表現できます。2の補数表現では、この値は-1になります。例題の演算で得られた値は、1の補数だから1と0がきれいに以下のように反転するわけです。0これは10進では-12になります(10進へは2の補数表現として変換することに注意)。この講座はコンピュータにおける数値表現の説明を行なうわけではないので、これ以上の説明は省きますが、詳しく知りたい人は情報科学の書籍で勉強してみてください。シフトは右に左にさて、最後の論理演算について説明しましょう。それは、算術右シフト「]」と算術左シフト「[」です。これは数値を2進数で考えて、右や左に指定された数だけシフトするものです。1010bを左に2つシフト40最初の例で説明すると、1010bを右に1つシフトすると101b、もう1つシフトして10b。10bは10進で2です。次の例も1010bを左に1つシフトすると10100b、もう1つシフトして101000b。101000bは10進で40となります。[」は同じ値になりますね。...全てを0と1のバイナリで表現します。それらをAND/OR/XOR/NOTといった論理演算で処理、加工しています。コンピュータの画面に表示される文字、絵、コンピュータから流れる音楽、これら全てが実は0と1の集まりであり、論理演算の結果と言えます。『今回の問題』.................................................................................以下を逆ポーランド式に変換せよ。論理演算子で10進数の数値「123」を2倍する式。論理演算子で10進数の数値「123」を4分の1にする式。トップへ文字で作られた図表や式が崩れることがあります。ブラウザによっては固定幅フォントをMSゴシックにするときれいに表示されます。それでも崩れる場合は図表や式をメモ帳にコピー後、閲覧下さい。rpn試用版と標準版(2kリビジョン)はダブルクォートで囲ってください。"foo"ダブルクォートは省略できることが多いのですが、慣れない間は囲んだほうが無難です。本ウェブサイトの記事ではrpn標準版(98リビジョン)を使用しているため囲っていません。TIPS」を参照ください。rpnの障害情報はこちら。rpn試用版の場合、複雑なプログラムや処理時間のかかるプログラムの一部には動作しないものがあるかもしれません。無料提供であることを勘案・了承ください。rpn標準版は、すべてのプログラムが動作します。※ウェブサイトの内容を無断で複製、変更することは法律で禁じられています。