カニゲーム攻略日記ブログ

beatmaniaIIDXやハースストーンなどのゲーム攻略日記。主にまったり勢。2016年にIIDX皆伝になった

プログラムはなぜ動くのか 第2章データを2進数でイメージしよう

プログラムはなぜ動くのか 第2章データを2進数でイメージしよう

ハードウェアのこと知りたいっす
ということでプログラムはなぜ動くのか第2章
論理演算はググればすぐ出そうなので省略した

コンピューターが2進数を取り扱う理由

コンピュータの電子部品(IC)が
01しか扱えないから

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