バッファに新しい行の文字列画像が出来たら、後はそれを画面にコピーするだけです。ただ、そのコピーの前に現在表示済みの画像も1ラインコピーして上げる処理が必要です。コピー元がバッファか画面上かの違いだけで、やってることは同じです。そのため、ここを如何に高速に処 ...
カテゴリ:Programming > Algorithm
素数算出と実行速度の差
某所で素数を列挙するプログラムを見かけて、自分も作ってみようという気になりました。また、ついでに C言語、C++、C# でも同じように作成して、そのコードの違いや実行速度の差を検証もしてみました。私の当初の予定では、圧倒的に C++ が高速だと思ってました。さて、その ...
ALG データ圧縮の考え方
データ圧縮する際に最初に考えるのは「まとめる」事と同じ表現をより小さい値に「置き換える」事です。一箇所指定したら、周辺にドドドッと配置してしまえば、それだけでかなり省メモリです。座標系が1024x512だと座標系はデータが大きいですが、前回のデータからのオフセッ ...
Z80 除算アルゴリズム
乗算に続いて今回は除算、そう割り算です。割り算はA÷Bだと、AからBを何回引けるかという計算なので、単純にA-Bを引けなくなるまで繰り返すと答えが出ます。これまた簡単です。この処理も乗算の時と同様に、最大で256回ループする可能性がある(1で割れば…ですが)ので、こ ...
Z80 乗算アルゴリズム
乗算って、例えばA×Bってのは、AをB回足したのと同じだから、単純に掛ける数の回数で掛けられる数を加算すると、これで答えが出てしまうんです。簡単ですよね。 ただ、この処理系だと最大で256回ループしてしまうので、それを何とか減らしたいワケです。今回はこの乗算につ ...
ALG 確率について
今回は多くの人が間違った解釈をしていると思われる確率について、私の考えを述べたいと思います。これはあくまでも私の考えですので、正しいとも間違っているともどう思われても構いません。ただ、これをきっかけに何かを感じていただければ幸いです。 乱数の結果は予測不 ...
ALG 初期化(宿題の解説
今回は初期化です。これ、C言語講座分類にしようか悩みました。理由は C言語で説明するためです。とはいえ、基本的な考え方は普遍的で共通ですので、その辺りを見て頂けると幸いです。 まずは宿題の答え前回の ALG 状態遷移で宿題が出ていました。こちらは実行すればすぐに ...
ALG 状態遷移と管理
状態遷移の管理と言われても、最初は何のことか分からない人も多いと思います。そのため、まずは順序立てて説明していきます。理解したら、もうこの状態遷移での管理を使わずにはいられなくなると思います。それほど便利な管理法だと思っています。なお、今回は初心者向けの ...
ALG 迷路脱出
以前、迷路の自動生成について解説しました。今回は、この迷路を使ってスタートからゴールまでの経路を調べるプログラムの解説です。これ、迷路探索って言うんですよね。前回のプログラムに追加する形で説明していきますので、前回のプログラムを見ていない場合は、先に確認 ...
ASM マイナスの値とは
アセンブラでのマイナス数値がどのように扱われているかの解説となります。ビットシフト系で計算を行う際は、この知識は必要となります。改めて理解しようとすると意外と難解なんです、マイナスの値って。コンピュータが扱う数値表現アセンブラでは2進数からの構成で全ての数 ...