
/*
    KAB-studio.h
        　ＫＡＢ−ｓｔｕｄｉｏで先週更新した内容
        が格納されたヘッダーファイルです（笑）。

    (C)KAB-studio 1999 - 2000 ALL RIGHTS RESERVED.
        http://www.kab-studio.com/
        info@kab-studio.com

    送信日： 2000/05/22(Mon) No.058
    配信数： 3720（ Mag2 + Pubzine ）
＊    発行元： まぐまぐ( URL: http://www.mag2.com/  ID: 0000012198 )
＊    発行元： Pubzine( URL: http://www.pubzine.com/  ID: 590 )
*/


/*              ２０００年５月２２日（月）の更新                  */
http://www.kab-studio.com/Info/News/

・更新なし。 
　ううっ、今週はそれなりに時間あったのに、結局休養に使ってしまっ
た……。


/*                        チョー普通な日記                        */
http://www.kab-studio.com/nikki2/

2000/05/14 (Sun)
　いろんなこといろいろと。あ、テレビの話が一番長いや（爆）。相変わら
ずのダメっぷりですな。あと顔について。

2000/05/15 (Mon)
　引き続き顔ネタ。髪の毛のロンゲバージョンと短髪バージョン、あなたは
どっちが好み？（おい）

2000/05/16 (Tue)
　のんびりー。そしてたれぱんだ火美ちゃん。うー、描く暇がない……。

2000/05/17 (Wed)
　授業とかゲームとか。あと仕事へのスタンス。最近ちょっと短め？

2000/05/18 (Thu)
　久しぶりにひるねー（爆）。やっぱ昼寝はいいねぇ。そして謎のヒット数
増加。

2000/05/19 (Fri)
　のんびり＆ゼミ。今日もやや短い感じですな。 MAC OS X いい……。

2000/05/20 (Sat)
　マイクロソフトの入社適性検査を受けに行く……ああっ！！


/*                         鏑矢の憂鬱                             */
http://www.kab-studio.com/Programing/KabuU/

2000/05/14 (Sun)
ぷらとわを１話書く
const ポインタについて
まず const ありきじゃなく、リードオンリーの機能のために const がある
C++ にはそういうのが多い
virtual とか
そこを押さえると憶えやすい
そういうのばかりでもないけど

2000/05/15 (Mon)
情報理論の授業
数学中心
情報処理論のレポート作成
周波数と周期
時間視点と周波数視点
難しい
数値演算系プログラムに慣れないと

2000/05/16 (Tue)
情報処理論の授業
グラフ理論

2000/05/17 (Wed)
信号処理論の授業
フーリエ変換 : Exp だから単なる正弦波のスペクトルしか取れない
ラプラス変換、 Z 変換 : 大きさや位相の違う正弦波も扱える
でもよく分かんない
Z 変換がなぜ多項式になるのか
Z^-1 がなぜ「ひとつ過去」になるのか
^ は累乗のこと

2000/05/18 (Thu)
C マガジンはクロスライブラリが良かった
ファイルヘッダを読み込む方法は？
#pragma pack( 1 ) + 構造体 + read() ？
メンバひとつひとつコピー？
ふと思ったこと
上の関数を呼べないのは面倒
宣言部を書くのも面倒
class に入れてしまえばいいのでは？
サンプルコード
やりすぎ
お便り
^ を累乗に使ってしまったことが
BASIC からだとそうらしい
b ^= a; a ^= b; b ^= a; (値の交換)

2000/05/19 (Fri)
お便り
b ^= a; a ^= b; b ^= a; 初めて見た
やっぱこういうのって最初に考えた人がすごい
真似しない方がいいような気も

2000/05/20 (Sat)
お休み


/*             プログラミング辞書・今週の追加単語                 */
http://www.kab-studio.com/Programing/Dictionary/
（６月一杯まで更新を休止します、御了承ください）


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~[KCM]
『変数を関数みたく使える、ってそんなに変なの？』
「関数オブジェクトのこと？　こういうのって免疫ない方がいいのかも」
『げ、でも今のあたしにはちょっと早いかなー、とか……』
　早くないあなたは購読登録。
http://www.kab-studio.com/Programing/STLiostream/
_______________________________________________________________[KCM]


/*                       #pragma twice                            */
http://www.kab-studio.com/Programing/PragmaTwice/

　Version 4.08
色々な型

「前回は short とバイトオーダーについて見てみました」
『リトルエンディアンなんて大っ嫌い！』
「まだ言ってるし……。さて、今回は他のいろんな型をばばっと見ていくこ
とにしましょう」
『ってことは、結構いろんな型があるの？』
「うん、結構あるね。 MSDN で【キーワード】に short って入れてみて」
『ほいっと。あ、結構出てきたね』
「下の中から【 short 型】をダブルクリックして、【該当するトピック】
の中から【基本型】を選んで」
『基本型ってページが出たよ。 char short int _intn long float double
long double ……いっぱいあるね』
「これが C++ 言語が最初から用意してくれている型。最初５つが整数を入
れるので、あとの３つが実数を入れるの」
『じっすー？』
「小数点付きの数字のこと」
『……ってことは整数って小数点付いてないののこと？』
「そうだよ。って知らなかったのか……」
『教わったよーな気もするけど。 char の部分に、この前言ってたようなこ
と書いてあるね』
「 char 、signed char 、 unsigned char のことだね。何も付いてない char
が signed か unsigned かっていうのは実は固定されてないんだよね」
『コンパイルオプションってので変えられるんだ。でもなにそのコンパイル
オプションって』
「ビルドするときの設定のこと。これはちょっと難しいから今度ね」
『ぶー』
「ま、デフォルトは signed だから」
『他の型も省略すると signed になるんだね。あれ、実数のにはそーゆーこ
と書いてないね』
「実数は整数と中身が違うからね」
『中身って？』
「整数の時はメモリの中は 0x01 が 1 だとか 0xFF が -1 とかだったけど、
実数はこれとは違う方法でメモリの中に置いてあるから」
『そーゆー中身ね』
「だから符号なしってのはないんだよね。全部符号あり」
『ほー』
「実数については、中身に沿った処理とかすることは少ないから、あんまり
気にしなくていいよ」
『それってたとえばビットフラグに使わないとか？』
「そういうことだね。じゃ次に、 MSDN の左下の一覧に short ってあるで
しょ」
『キーワードに short って入れて最初に出てきたのだよね。ダブルクリッ
ク！　トピック４つ出てきたけど』
「【データ型の範囲】を選んで」
『ほいっと。さっきみたいな表が出たよ』
「 char があるでしょ、探してみて」
『うん、真ん中へんにあった。ええっと、 char 、バイト数 1 、その他の
名前 signed char 、範囲 -128 から 127 。なんだ、こーゆーのってちゃん
と書いてあるんだね』
「もちろん、資料としてね。僕としては、ただ読むよりプログラムで試した
方が分かりやすいと思ったから、このページを後回しにしたけど」
『まーね、あたしだってこのページ見せられて〈こうなんだよ〉とか言われ
ても納得できないもん』
「だよね。その下には」
『 unsigned char 、んで short に unsigned short っと、この辺もこの前
と同じね』
「その下のは初見でしょ。 long と unsigned long 」
『４バイトって書いてあるから、フツーに、 char が１バイト、 short が
２バイト、 long が４バイト、って考えちゃっていいの？』
「いいよ。基本的にサイズが違うだけ。操作法とか、中身とかは同じ」
『中身！　ってことは…… 1 が……４バイトだから４マスで 01 00 00 00 
って並び順なの！？』
「そ、リトルエンディアンね」
『う”〜』
「値の範囲は？」
『あ、えーっと、うわなんかすごい数書いてあるね』
「符号ありはマイナス２０億から２０億まで、符号なしは４０億までね」
『４０億！　すごー』
「すごいんだけど、 short が小さすぎるからこっちを使うのが多いかな」
『 short は６万、お給料入んないね』
「 enum はとばして、そのあとの float double そして long double は
実数のね」
『ねー、ここに書いてある 3.4E +/- 38 ってどーゆー意味？』
「 E っていうのは〈１０の何乗か〉ってこと。 E 38 なら 10 の 38 乗、
ってことは０が３８個並ぶってこと」
『……って、すごい数じゃん！』
「E -38 なら 10 のマイナス 38 乗、ってことは小数点以下０が３７個並ぶ
ってことだね」
『はー、整数とは違うんだね……って、 float っての、たった４バイトに
そんな入るもんなの？』
「入んないよ。 float や double は〈浮動小数点〉っていって、ゼロの位
置が変わるからこんだけ表せるってだけ」
『？』
「数字の部分とゼロの位置を別々に取っておくってこと。数字が 1234 みた
いに入っているときに、ゼロの位置を移動できれば 0.0001234 や 12340000
とかすることができるから」
『はー、つまり〈値〉と〈基準〉が入ってるんだ』
「こういうふうにゼロ、つまり小数点の位置を変える方法を〈浮動小数点〉
っていいます」
『ふーん』
「ま、実数は当分使わないと思うから今回はこんなところで。結構複雑だか
ら一筋縄でいかないとこもあるからね」
『整数だけでもかなり複雑だもんねー』
「さて、型の最後は int について」
『そういえば、 int って最初の頃よく使ったよね』
「 int は表の一番最初に書いてあるから読んでみて」
『はーい。えっと、 int 、バイト数……？ * ってなに？　その他の名前は
signed と signed int 、まー char とかと同じ感じね。で、値の範囲……
システム依存？』
「そう、実は int は、サイズが開発環境とかＯＳとかによって変わってく
るんです」
『えっ、なんかそれ不安！』
「っていってもウィンドウズなら４バイト、つまり long と同じだけどね」
『あ、そうなんだ』
「コンピューターとかＯＳとかってよく１６ビットとか３２ビットとか６４
ビットとかって書いてあるでしょ」
『うん、プレステ２が１２８ビットとか』
「昔は１６ビットがあったけど、ウィンドウズ９８とかを含めて、最近のパ
ソコンは３２ビットがほとんど。６４ビットとかはまだ先っぽいね」
『それが int とどう関係すんの？』
「３２ビットって何バイト？」
『８ビットで１バイトだから……４バイト。あ、 long のサイズだね』
「コンピューターのビット数っていうのは、データを一番計算しやすいサイ
ズのこと」
『計算しやすい？』
「コンピューターの中には足し算とかする計算機があるわけ。その計算機が
一度に計算できる桁数がそのビット数になるってこと」
『つまりウィンドウズだと４バイトの数字を計算するのが一番楽？』
「１回で計算できるってことだね。そのサイズが〈何ビット〉とか表記され
て、そしてそれが int 型になるわけ」
『 int 型ってつまり一番計算しやすい型ってことね』
「そういうこと。だから、普通に整数を扱うときには int を使うのが一番
ってことだね」
『普通じゃないときって？』
「 int は大きすぎるから、小さい値を入れるときには無駄が出てくるって
ことで他の型を使うときとか、あと３２ビット以外のパソコンで使う場合を
考えるときとかはね」
『それはないでしょ』
「そんなことないよ。ウィンドウズがバージョンアップして６４ビットにな
るとか」
『げ、そんなことあんの！？』
「前にね。１６ビットから３２ビットに移るってときがあったんだよ」
『はー』
「だから、変数のサイズが大きな意味を持つってときには、 int は使わな
い方がいいかな」
『なんかむつかしいねー』
「難しいのはやっぱ、コンピューターの中身に関わってくることだからかな」
『そうよそうよ！　なんかそーゆーこと考えなきゃいけないのって変くない？
車だって構造知らなくても動かせるじゃん』
「僕らプログラマーは車を作って整備する側、でしょ」
『あー、なるほど。って結構重荷ねそれ……』
「何を今さら。さて、とりあえず実数型は置いといて、整数について振り返
ってみましょう」
『振り替えるったって、１バイトの char 、２バイトの short 、４バイト
の long 、システム依存だけどウィンドウズなら４バイトの int 、ってと
こでしょ』
「そうそう。で、この各型、大きいサイズのものから小さいサイズのものへ
はそのまま変換できます」

void char2long()
{
    char ch = 100;
    long l = ch;
    TRACE( "%d, %d\n", ch, l );
    // 100, 100
}

『 char は１バイト、 long は４バイト、余裕よね』
「 ch の方に入っていた 100 がちゃんと l の方に入ってる、この点に注意
しつつ、今度は逆に、大きいのを小さい方に入れてみましょう」

void long2char()
{
    long l = 10000;
    char ch = l;    // 警告！
    TRACE( "%d, %d\n", ch, l );
    // 16, 10000
}

『あ、警告でちゃった』

warning C4244: 'initializing' : 'long' から 'char' に変換しました。
　データが失われているかもしれません。

『イニシャライズって〈初期化〉って意味よね』
「そ、ここでは ch 変数の初期化のときってこと。 ch の中に l の中身を
入れようとしたんだけど、l は long 型だから入りきらない、って警告」
『結果も全然違うし』
「 char には 10000 なんて数字入らないからね。で、そういう可能性があ
ることをＶＣが警告してくれてるってこと」
『確かにこれ、気付かなかったら怖いよね』
「だから、基本的にこういった〈大きいのを小さいのに入れる〉ってことを
しちゃダメ。無理な変換はできるだけ避けるようにね」
『はーい』

/*
    Preview Next Story!
*/
『そっかー、あたしたちは作ったり整備したりする側なんだー』
「ってことを考えすぎない方がいいかな？」
『なんで？』
「使う側を考えないとろくなものできないから」
『車もそうだもんね』
「というわけで次回」
＜ Version 4.09 定数を使おう！ ＞
『につづく！』
「でも、ただの整備士が少し言ったくらいじゃ会社は変わらないんだよ……」
『また黄昏るしー』


/*                       金菜さんの憂鬱                           */
http://www.kab-studio.com/Programing/KanaU/
（現在休止中です、御了承ください）


/*            ２０００年５月００日（月）の更新予定                */
http://www.kab-studio.com/Info/News/

・予定なし。 
　就職先がまだ決まらない私にいったい何をせよとゆーの？　ううっ……。


/*                          ご注意！！                            */

・このメールを返信しないでください。
・ご意見・ご希望・ご感想は[チョー普通な日記]よりお送りください。
http://www.kab-studio.com/nikki2/
・プログラミングに関する質問は[鏑矢の憂鬱]にお送りください。
http://www.kab-studio.com/Programing/KabuU/
・購読登録を解除したいときにはこのページで行なってください。
＊http://www.mag2.com/m/0000012198.htm
＊http://www.pubzine.com/detail.asp?id=000590
・解除は自分で行なってください。
・バックナンバーはこれらのページにあります。
http://bigbeat.tegami.com/~mgsearch/frame.cgi?id=0000012198
http://www.kab-studio.com/Freeware/

/*
    KAB-studio.h
    Weekly Mail Magazine.
    Written by Kaburaya Seiden.

    (C)KAB-studio 1999 - 2000 ALL RIGHTS RESERVED.
        http://www.kab-studio.com/
        info@kab-studio.com
*/


/*                      See you next week!!                      */


