情報工学基礎

情報工学基礎(改訂版)
岡崎裕之
の前に前回の続き
* 任意の文字列
? 任意の一文字
~/ ホームディレクトリ
例
ls *.c
rm kadai1_?.c
cp /etc/.tcshrc ~
ls –l で表示されるもの
rwx rwx rwx
rw- r - - r - rw- - - - - - User
Group
Other
パーミッションを変える
コマンドchmod
rwx rwx rwx
のhogeを
rwx r - - r - -に変える
>chmod go-wx hoge
情報工学基礎
岡崎裕之
情報とは?
じょうほう【情報】
あることがらについてのしら
せ。 判断を下したり行動を
起したりするために必要な
知識。
情報とは?
じょうほう【情報】
あることがらについてのしら
せ。 判断を下したり行動を
起したりするために必要な
知識。
言語の表記について
• 日本語の表記
カナ,かな,漢字,その他
• 英語の表記
アルファベット26文字+記号
英語の場合
• アルファベット =記号
記号の割り当て(対応付け)は人間の
都合
別の記号をつかってもかまわない
abcdefghijklmnopqrstuvwxyz
1234567890-^\!#$%&()=~|+*/
字組
• 記号の表現能力
記号1文字で表現できる事象の数
=記号の種類(アルファベットだと26種)
• 記号の種類を増やさずに表現できる
事象を増やしたい
字組(タプル)
n字組 n個の記号の組合せ(n桁)
英語の場合
• 記号26種類
• n字組で表現できる事象の数
26
n
• 字組に意味を対応付けしたものを
「語」と言う
語の例
• appleという5字組に「りんご」とい
う事象を対応付けした
• 自然言語の1語の桁数は可変
コンピュータの場合
• 記号の種類 2種類 0 と 1
実際には電荷,電圧などで表現され
ている
• 1語の桁数は固定
レジスタのサイズに依存する
型
• 全ての事象を0,1の字組で表現している.
• 数値(整数,浮動小数点数),文字,アドレ
ス,命令など
• 同じ表現の語でも型が違うと全然意味が
違うので注意が必要
• 0000000001000000
は整数型だと65,文字型だとA
と対応付けされている
文字型
• ASCIIコード,JISコード,
EUC,Unicode,トロンコード
などいろいろな対応づけがある
• コード表を参照
整数型
• 符号なし
• 符号付き
• 2進表記(2進数)
• 10進表記(10進数)
• 16進表記(16進数)
パーミッションを変える
コマンドchmod
rw- rwx
のhogeを
rw- r - >chmod
>chmod
rwx
r - -に変える
go-wx hoge
644 hoge
rwx
111
rwx
111
r-- r-100 100 744
rw- r - 110 100 764
整数10進表記
0,1,2,3,4,5,6,7,8,9
の次は桁が上がって 10
123  1100  2 10  3 1
 110  2 10  3 10
2
1
0
an 1  a0
an 1 10
n 1
   a0 10
0
0,1
整数2進表記
の次は桁が上がって 10
101  1 4  0  2  11
 1  2  0  2  1 2
2
1
0
an 1  a0
an 1  2
n 1
   a0  2
0
整数16進表記
0,1,2,3,4,5,6,7,8,9, a, b, c, d , e, f
の次は桁が上がって 10
a1  10 16  11
 10 16  116
1
0
(1桁の)16進10進の変換,
16進2進の変換は覚えろ
見易いので使っている
10進2進変換
50  32  16  2
 1 32  1 16  0  8
 0  4  1 2  0  1
 1 2  1 2  0  2
5
4
3
 0  2  1 2  0  2
2
1
0
10進2進変換
50  2  (1 2  1 2
4
3
 0  2  0  2  1 2 )
2
 0 2
1
0
50  2  25あまり 0
0
10進2進変換
25  2  (1 2  1 2 
3
0 2  0 2 )
1
 1 2
0
0
25  2  12あまり 1
2
10進2進変換
12 
2  (1 2  1 2  0  2 )
2
 0 2
1
0
12  2  6あまり 0
0
10進2進変換
6
2  (1 2  1 2 )
1
 0 2
0
0
6  2  3あまり 0
10進2進変換
3
2  (1 2 )  1 2
0
0
3  2  1あまり 1
10進2進変換
1
0  2  1 2
1
0
1  2  0あまり 1
10進2進変換
50  2  25あまり 0
25  2  12あまり 1
12  2  6あまり 0
6  2  3あまり 0
3  2  1あまり 1
1  2  0あまり 1
110010
Cのコンパイル
• ソースファイルを作成.
#include<stdio.h>
main(){
printf(“Hello World”);
} ここで必ず改行
*.c という名前で保存(例 hege.c)
Cのコンパイル
• コンパイル
> cc hoge.c
a.exe というファイルができる
Cのコンパイル
• 実行
> ./a.exe
プログラミング言語
• 低級言語(アセンブリ言語)
• 高級言語
C,Pascal,BASIC,COBOL
LISP,prolog,JAVA,C++など.
高級言語(たとえばC)
Cのソースコード
↓コンパイラ(コンパイル)
アセンブリコード
↓アセンブラ(アセンブル)
オブジェクト
↓リンカ(静的リンク)
実行ファイル
• ただし,実行時に動的リンクが行われる場合もあ
る(DLLの呼び出し)
どうやってうごいているか
実行ファイル
OS
ハードウェア
実行ファイル
実行ファイル
メインメモリ
マシン命令(オプコード+オペランド)
実行ファイル
実
マシン命令(オプコード+オペランド)
行
マシン命令(オプコード+オペランド)
実行ファイル
マシン命令(オプコード+オペランド)
データ
データ
マシン語
01001101010101010101001010100110
01101010101010101010101010101010
11011101010111011111000000101010
11010111000101101101100100110100
実行ファイル
11000001011111000010111000101110
11110101110111100011101110111001
マシン語でのプログラミング
01001101010101010101001010100110
• マシン語をバイナリエディタで直接入力
• ファイルを保存
• ファイルのプロパティを実行可にする
• 命令が正しければちゃんとした実行ファイルがで
きるはず
• やりますか?
アセンブリ言語
01001101010101010101001010100110
• マシン語をニーモニックに置き換えた
ADD 5 3
と書くより
とかの方がまだ分かり易い
アセンブラ
• アセンブリ言語をマシン語に
単純に置換するだけのソフト
• アセンブリ言語でのプログラミン
グとは実行ファイルを直接編集
することにほぼ等しい
• 実行ファイルはメインメモリ上に
展開されるイメージそのもの
GR0
GR1
GR2
GR3
GR4
GR5
GR6
GR7
SP
FR
PR
プロセッサ
10100110
10101010
00101110
メモリ
ALU
スタック
FR
GR0
GR1
GR2
GR3
GR4
GR5
GR6
GR7
4
7
3
PR
3
1
4
2
+
SP
LD GR0 5
1
LD GR1 6
2
ADD GR0 GR1
3
ST GR0 7
4
4
5
3
6
ALU
7
7
7