放送大学で、ソフトウェアのしくみを順調に(汗)学習中です。
はてさて、第1回の授業を受講し、演習問題に取り組んだモノの、エクセル女子(笑)には意味不明な単語が続出。「符号あり正数」これは、「+」「-」の符号がつくと言うことで理解。DBで桁数(文字数)を設定する場合、10桁なら、符号で1桁使うので、実際には9桁しか入力できなくなる、そんな感じ。「2進数」これは、数字を0と1で表示するということで、時計の12進数や60進数が理解できていればOK。でも、0→1→10→11→100 と、即桁が上がる恐ろしい表現方法。なるほど。最後に「2の補数」。これ、わかりませんね(笑)。Facebookで説明を受けても、はぁ?という感じ(失笑)。エクセル女子の日常に全く存在しない文化です。
結論として、「2の補数」を理解することよりも、符号あり正数の負の数を、2進数化するときに、2の補数で表現できるようになればOKと理解。プログラムはなすべきコトができればそれで良いのです!(初心者の内は)!!
- 負数の絶対値を取る
- 2進数にする(3bit)
- bit反転する(0→1、1→0、なので、100→011)
- 001を足す
エクセル2010には2進数に変換する関数 DEC2BIN() がありますが、2進数化した数値を2進数として計算させることはできないようです。111+001なら1000が解ですが、エクセルは112とします。普通ですね(笑)。ということで、10進数で計算したモノを2進数化するのがよろしいようです。
個人的に困ったのは、不慣れすぎて、この計算過程が正しいかどうか確認する術が無かったこと。解が回答と同じでも大丈夫なのかと不安になりました。ということで、エクセルで、計算過程を表現してみようと思い至ったわけです。
また、演習問題2.2、2.3の表をエクセルで作成し、×がつく(フラグが立つ)場所に×を付けてみました。こんなことに4時間も消費したことは棚上げしておきます。きっと、このファイルを作った知識はPGする時に役立つと思うから。
作成したエクセルファイルはこちらにあります→ http://1drv.ms/1huBaTM
なお、bit反転するエクセル関数がなかったため、エクセルで数字を反転させるマクロ、関数はありますか? 例 11→00 00→11 を参考にしました。質問者と回答者に感謝感謝♪ また、不幸にも巻き込まれてしまったソフト屋の背の君様にも感謝感謝。「旧2種の勉強?」と言われてしまった(笑)。
では、エクセル女子、エンドユーザー女子の皆様、お互い、コツコツがんばりましょう!!
オススメサイト
■ Facebook 放送大学講義「ソフトウェアのしくみ」
■ Facebook 放送大学講義「コンピュータのしくみ」