1
情報科学 第03回 前半 計算機と2進数
計算機とは
計算機は、ざっくりと言って、CPUとメモリ、
入出力装置からなる。
CPU メモリ
入出力 装置
計算機
データを データの処理、 保存する
全体の制御 外部と
データを やりとりする
ビットとバイト
日常、人は、値(数)は
10進数で、文字は文字として使 用している。
一方、計算機の内部では、すべてのデータは
0,1で管 理されている。0,1 しか取り扱うことができない!
また、計算機は、メモリにデータを蓄えている。
単位は、
bit
byte
1byte 1bitが8つ集まっている。
1bit 0 もしくは1 のどちらかを保存。
メモリとアドレス
0000 0001 0002 0003 0004 0005 0006
アドレスがふられている メモリの概念図
基本的に、byte単位で データを取り扱う。
メモリは、
1byteを保存で きる場所が大量にある。
それぞれの場所には、ア ドレスがふられている。
昔の計算機の利用
0000 0001 0002 0003 0004
人間は、曰く
"人間語"を話す。
計算機は
2進数しか理解できない!
昔は、人間が計算機に合わせて、
2進数を話していた。
了解。
理解した。
計算機
処理
こういう処理 をやりたい
なぁ
人
10001001 01101010 10111010 11011011
今の計算機の利用
0000 0001 0002 0003 0004
人間は、2進数を会話するようにできていない!
2
進数を話さなくても使えるように、ソフトウェア部分で 変換等をしている。
了解。
理解した。
計算機
処理
こういう処理 をやりたい
なぁ
人
printf() get() put() while() 10001001
01101010 10111010 11011011
変換
7/63
2 進数と 10 進数
日常、値(数)は
10進数で使用している。
一方、計算機の内部では、すべてのデータは
0,1で 管理されている。
計算機を理解するときには、この
0,1 がどのようにして計算されているかは重要。
今から数枚のスライドでは、
10進数の値を"14510"の様に、
2進数の値を"1452"の様に、
右下に小さく値を書いて表現することとする。
8/6310 進数とは (1)
" 1 10"
を で表すとする。
14510
は
を意味している。
"ブロック"10個で、(違う大きさの)"ブロック"となる。
9/63
10 進数とは (2)
14510
は、「1個のブロックが10個集まったブロック」が14個と、
「1個のブロック」が5個。
これは、「10個のブロックが10個集まったもの」が1つと「1個のブ ロックが10個集まったブロック」が4個と「1個のブロック」が5個
10/63
10 進数とは (3)
結局、145
10の意味することは、
1 4 5
10「10個のブロックが
10個集まったもの」が1つ「10個のブロックが 集まったもの」が4つ
「1個のブロック」
が5つ
1 × 10
2104 × 10
1105 × 10
01011/63
10 進数とは (4)
2614510
の意味することは、
4桁の値の各桁をxy
のように表現することにすると、
2 6 1 3 2
102 × 10
410+6 × 10
310+1 × 10
210+3 × 10
110+2 × 10
010x
3x
2x
1x
0 10x
3× 10
310+ x
2× 10
210+ x
1× 10
110+ x
0× 10
01012/63
2 進数とは
"
ブロック
"2個で、(違う大きさの)
"ブロック
"となる。
11112
の意味することは、
1 1 1 1
2「
1個のブロック」
が1つ
1 × 2
010「
1個のブロックが
2個集まったブロック」
が1つ
1 × 2
110「2個のブロック が2個集まった ブロック」が
1つ
1 × 2
210「2個のブロックが
2個集まったブロックが
2個集まったブロック」が1つ
1 × 2
31013/63
10 進数から 2 進数へ (1)
2710
は、
2進数で表現するとどうなるか?
2で除算をして、余りが各桁の値となる。
1. 2710
は、2
1個のブロック13個と、1個のブロック1個。
(
2710を
210で割ると、
13余り
1だから)
2. 2710
は、
22個のブロック6個と、
21個のブロック1個 と、
1個のブロック
1個。
(13
10を2
10で割ると、6余り1だから)
14/63
10 進数から 2 進数へ (2)
2710
は、
2進数で表現するとどうなるか?
3. 2710
は、
23個のブロック
3個と、
22個のブロック
0個 と、
21個のブロック1個と、1個のブロック1つ。
(
610を
210で割ると、
3余り
0だから)
4. 2710
は、
24個のブロック1個と、
23個のブロック1個 と、
22個のブロック
0個と、
21個のブロック
1個と、
1個のブロック1つ。
15/63
10 進数から 2 進数へ (3)
2710
は、2進数で表現するとどうなるか?
5. 2710
は、
24個のブロック1個と、
23
個のブロック
1個と、
22
個のブロック
0個と、
21
個のブロック1個と、
1
個のブロック
1個 なので、答えは
11011。
1 1 0 1 1
16/63 16/63
2 進数から 10 進数へ
4桁の値の各桁をxy
のように表現することにすると、
1011