メルマガ:あゆしゃのC言語プログラミング
タイトル:あゆしゃのC言語プログラミング(Vol.433) 大型計算機 足し算  2004/03/15


/*========================================================*/
    <<<あゆしゃのC言語プログラミング>>>
/*========================================================*/
 第433回 大型計算機 足し算
 発行    2004年3月15日(月曜日)
 発行数   約3100

{magclick}
/*========================================================*/
 はじめに ( 決り文句 )
/*========================================================*/
・このメールマガジンはまぐまぐさんから発行しています。
・ジャンルは、マルチメディアのプログラム、C言語です。
・このメールマガジンは、横60文字で作成しています。
 また、インデントはすべて半角スペース4つで構成しています。
・ここで扱うプログラムは、C言語と半光年以内のものです。
・登録解除は、まぐまぐさんのホームページでお願いします。
・まぐまぐさんのバックナンバー(下欄参照)を活用して下さい。
・ここは私の復習の場です。内容は約1ヶ月内外に私が勉強した
 内容になっています。最新の技術があれば、へたれもあります。
・わかりやすさを優先させる為、たまに嘘があるかもしれません。

/*========================================================*/
 ご挨拶
/*========================================================*/

 こんにちは。あゆしゃです。

 あれが降臨しておりましたので、1週間ぶりとなりました。

 おかげさまで、ハードでエンディングを見るまでになりました。

 何の話って、甲a殻b機c動d隊に決まっているじゃありませんか。

(セキュリティーによりゲームなどの用語を受信拒否しやがる
 メールサーバがあるらしいので、暗号化しています)



★以下、日記です。ネタばれがあるかもしれません。



 最初、弾の打ち方も知らずにゲームスタート、最初の男を倒す
のに30分かかりました。

 次に、クレーンへジャンプ&へばりついて飛び移る方法が
分からず、だけどジャンプのみで届くことがまれにあるので、
それに任せて力業でクレーンをクリア。時間かかりました。

 クレーンを越えた後、ブロックの上にいる人に攻撃され、
怖くてクレーンを降りられず、

 挙句の果てにクレーンから落ちてしまって、クレーンやり直し。

 しかし、クレーンに届かない。。。ぐっぅ。。。

 これは駄目だと思い、チュートリアルを体験。いろいろと技を
覚えて、クレーンを難なく(3回ぐらいやり直して)クリア。

 ところが、その後の高所ジャンプのところで、落ちまくり。

 10回ぐらい死にました。が、何とかクリア。

 コンティニュー無限は、ありがたいことです。

 が、その後のスナイパーで殺されまくって、先に進めず。

 セーブされないのを不思議に思いつつ、この日は断念。

 初日は4時間かけてもセーブできる場所までいけませんでした。

 2日目(火曜日)、スナイパーはハックすればよいということに
気がついて、ステージクリア。その後に初めてのセーブを体験。

 その後はさくさくと進み、この日はダムまで進みました。

 3日目(水曜日)、ジャンプアクションでめちゃくちゃ手こずり
ました。

 まずビルの外側からぐるっと回るのだということに気がつかず、
駅の周辺をうろうろうろろ・・・

 なんとか脱出した後、壁のぼりができずに、必死にジャンプ。

 その後、またしてもジャンプアクション、エレベータで
うろうろうろろ・・・

 エレベータは5段ジャンプしないと超えられないことに気が
つくまで、1時間かかりました。

 その後のバトーさんのステージで、警備システム相手に弾切れ
必死で、この日はここで断念しました。

 4日目(木曜日)、弾切れしないように警備システムを殴って
攻撃、なんとかクリア。

 その後は特に難しいところもなく、ラスボスも(強かったけど)
なんとか倒して、ゲームクリアとなりました。

 ここまで合計14時間ぐらいでしょうか。ふぅ、やれやれ。

 5日目(金曜日)、これまでイージーだったので、ノーマルに
挑戦。
 しかしゲームクリア後の特権として、弾数無限となったので、

 ・・・クリアを無視して、バクダン投げまくり・・・

 6日目(土曜日)、ノーマルのクリアは無視して、ハードで
プレイ開始。

 しかし簡単。もしかしてイージーが一番難しいのでは?

 バクダンよりも電撃投げまくりのほうが効果が高いことに
きがついて、

 ・・・電撃投げまくり・・・

 7日目(日曜日)、続きで、ラスボスまで一気にゴーしました。

 イージーで苦戦した井戸のそこのスナイパーも、電撃投げまくり
で難なくクリア。

 ラスボスはイージーより耐久が高くなっている分、厳しかった
ですが、何とかクリア。


 結論。電脳手術受けたいなぁ・・・



★以上、ネタばれがあるかもしれませんでした。




{magclick}
/*========================================================*/
 今回のお題  << 大型計算機 足し算 >>
/*========================================================*/

 大型計算機、というと大げさですが、巨大なビットの演算クラス
を作ってみましょうか?

 データは普通にバイナリの数値でとることにしましょう。

class CXInt;

 クラスの名前は、CXIntにしましょう。XはXPのX、極端な、とい
意味です。

enum { SIZE = 1024; }

UCHAR m_buff[ SIZE ];

 1024バイト、8192ビットを取りましょうか。

 ビット数を3で割ると大体10進数の桁数になるので、この場合
は、10進数2000桁ぐらいでしょうか。

/*========================================================*/

 1024バイトの足し算を考えてみましょう。

CXInt& add( CXInt& a );

UCHAR* pch = m_buff;
UCHAR* pch2 = a.m_buff;
UCHAR* pe = m_buff + SIZE;
int c = 0;

for( ; pch < pe; pch++, pch2++ ) {

c += ( int )*pch + ( int )*pch2;
*pch = ( UCHAR )( c & 0x000000ff );

c = !!( c & 0x0100 );

}

return *this; // 自分を返す

 こんな感じでしょうか。

 バッファは、下位の方のバイトが、数字的にも下位の方の桁を
あらわしているものとしましょう。

 c は、キャリーです。桁あふれを保持します。

 !!演算子は、c の9個目のビットがたっていたら1、
たっていなかったら0を返します。

 って、!を2回やっているだけですが。

 こうしようかなぁ、という例のようなもので、実行確認を
しているものではありません。

{magclick}
/*========================================================*/
 さいごに
/*========================================================*/

 ビット数 / 10 * 3 + 1 で、10進数の桁数がもとまります。

 3.3ビット増えると1桁上がる、という感じです。

 ビット数が8192だったら、10進数は2458桁です。

 私が考えた公式なので間違っているかもしれませんが。

 あっているかもしれませんが。

{magclick}
/*========================================================*/
 次回予告
/*========================================================*/

 次回は3月17日(水曜日)に、第434回を送ります。
 お題は「大型計算機 引き算」

 お楽しみに!

/*========================================================*/
 最後の決り文句
/*========================================================*/
 このメールマガジンは、まぐまぐさんから発行しています。
 このメールマガジンを解除したい場合は、まぐまぐさんをご利用
ください。このメルマガのまぐまぐアイディーは最後にあります。
 このメールマガジンには広告が挿入されていますか?
 このメールマガジンの内容に文面の引用はありませんか?
 めーらっくすの場合はめーらっくすの利用方に従ってください。
 このメールマガジンの内容の、転用、流用、宣伝、リンク、
へそだしバクダン魔 なんて大歓迎です。

{magclick}
/*========================================================*/
 
/*========================================================*/

発行者 あゆしゃ

まぐまぐアイディー
0000020674

まぐまぐバックナンバー
http://jazz.tegami.com/backnumber/frame.cgi?id=0000020674

あゆしゃの世界
http://ayusya.hp.infoseek.co.jp/

登録と解除
http://www.mag2.com/m/0000020674.htm

ご意見・ご感想・ご質問メール
mailto:ayusya@flamenco.plala.or.jp

めーらっくす <<過去ログがタイトル別になっています>>
http://www.mailux.com/mm_dsp.php?mm_id=MM3E1AEE285AB4F

ブラウザの閉じるボタンで閉じてください。