プログラムはなぜ動くのか 第2章データを2進数でイメージしよう
ハードウェアのこと知りたいっす
ということでプログラムはなぜ動くのか第2章
論理演算はググればすぐ出そうなので省略した
コンピューターが2進数を取り扱う理由
コンピュータの電子部品(IC)が
0と1しか扱えないから
2進数とは
桁が増える毎に2倍されるやつ
1桁目は1
2桁目は2
3桁目は4
・・・
例:
1111 = 1*2^3 + 1*2^2 + 1*2^1 + 1*2^0 = 1*2*2*2* + 1*2*2* + 1*2 + 1*1 = 8 + 4 + 2 + 1 = 15
補数とは
2進数でマイナスを表現したい
先頭が1だったらマイナスにするルール
(上記例はマイナスにしないルール)
例:-1
-1 = 1111
反転して1足せばいい
-1 = 1111 反転 = 0000 +1する 0000 + 1 = 0001 = 1
補数の計算
例:1 + (-1) = 0
0001 + 1111 = 0000
先頭の桁は消えるルール
シフト演算とは
例:左シフトすると2倍になる
4 = 0100 0100 << 1 = 1000 = 8
例:右シフトすると1/2倍になる
4 = 0100 0100 >> 1 = 0010 = 2
例:マイナスルール適用中の右シフトは1を詰める
-4 = 1100 1100 >> 1 = 1110 = -2 1100 >> 2 = 1111 = -1