2進数
ナビゲーションに移動
検索に移動
2進数(にしんすう)とは、1 + 1 = 10 になる、「1」と「0」の2種類のみの記号で表される、数値の表現手法。主にデジタル機器の内部の電気回路で扱う表現。
例[編集]
プログラミングする際も、例えばゲームパッドからの入力は、ボタンの箇所は2進数的な表現で取得される。
対象ボタン | 値 | |
---|---|---|
10進数 | 2進数 | |
何も押していない | 0 | 0000 |
Aボタン単独 | 1 | 0001 |
Bボタン単独 | 2 | 0010 |
A,Bボタン同時押し | 3 | 0011 |
Xボタン単独 | 4 | 0100 |
X,Aボタン同時押し | 5 | 0101 |
X,Bボタン同時押し | 6 | 0110 |
X,A,Bボタン同時押し | 7 | 0111 |
Yボタン単独 | 8 | 1000 |
Y,Aボタン同時押し | 9 | 1001 |
Y,Bボタン同時押し | 10 | 1010 |
Y,A,Bボタン同時押し | 11 | 1011 |
Y,Xボタン同時押し | 12 | 1100 |
Y,X,Aボタン同時押し | 13 | 1101 |
Y,X,Bボタン同時押し | 14 | 1110 |
Y,X,A,Bボタン同時押し | 15 | 1111 |
ビット演算[編集]
ビット演算を理解するには2進数を理解している事が必要になる。
例えば上の対応表の値を変数「data」で取得させている場合、Bボタンが押されているかどうか判定してそれにより処理が変わる場合は、
if data AND 2 {
//Bボタンが押されている時の処理
} else {
//Bボタンが押されていない時の処理
}
のような書き方になる[1]。
2進数での小数[編集]
2進数のビットが増えると2倍になっていくように、小数の位置にビットを増やしていくと、値は1/2倍になっていく。
10進数 | 2進数 |
---|---|
1 | 0001.0000 |
0.9375 | 0000.1111 |
0.875 | 0000.1110 |
0.8125 | 0000.1101 |
0.75 | 0000.1100 |
0.6875 | 0000.1011 |
0.625 | 0000.1010 |
0.5625 | 0000.1001 |
0.5 | 0000.1000 |
0.375 | 0000.0111 |
0.3125 | 0000.0101 |
0.25 | 0000.0100 |
0.1875 | 0000.0011 |
0.125 | 0000.0010 |
0.0625 | 0000.0001 |
0 | 0000.0000 |
2進数での負の数[編集]
2進数で負の数を表す場合、表記上は-1とかでも一応通じるが、電気回路上では最上位のビットで判断する。負の値は1、正の値は0という符号ビットとする。つまり値を格納している箇所は「符号なし整数型」なのか「符号付き整数型」なのか、どのように扱うかで判断が分かれる。
ちなみにこの補数表現は2進法に特有のものではなく任意の進法で表現可能(例えば10進法で8桁を超える位を無視する場合、 -1 = 99999999 と表現できます)。
10進数 | 2進数 |
---|---|
7 | 0111 |
6 | 0110 |
5 | 0101 |
4 | 0100 |
3 | 0011 |
2 | 0010 |
1 | 0001 |
0 | 0000 |
-1 | 1111 |
-2 | 1110 |
-3 | 1101 |
-4 | 1100 |
-5 | 1011 |
-6 | 1010 |
-7 | 1001 |
-8 | 1000 |
16進数[編集]
16進数は、2進数を4ビット毎に区切って表している表現と見る事もできるため、機械語の表現では一般的に使用される。
10進数 | 2進数 | 16進数 |
---|---|---|
0 | 0000 | 0 |
1 | 0001 | 1 |
2 | 0010 | 2 |
3 | 0011 | 3 |
4 | 0100 | 4 |
5 | 0101 | 5 |
6 | 0110 | 6 |
7 | 0111 | 7 |
8 | 1000 | 8 |
9 | 1001 | 9 |
10 | 1010 | A |
11 | 1011 | B |
12 | 1100 | C |
13 | 1101 | D |
14 | 1110 | E |
15 | 1111 | F |
1バイト[編集]
1バイトは、8ビット。
10進数 | 2進数 | 16進数 |
---|---|---|
0 | 0000 0000 | 0 |
1 | 0000 0001 | 1 |
2 | 0000 0010 | 2 |
3 | 0000 0011 | 3 |
4 | 0000 0100 | 4 |
5 | 0000 0101 | 5 |
6 | 0000 0110 | 6 |
7 | 0000 0111 | 7 |
8 | 0000 1000 | 8 |
9 | 0000 1001 | 9 |
10 | 0000 1010 | A |
11 | 0000 1011 | B |
12 | 0000 1100 | C |
13 | 0000 1101 | D |
14 | 0000 1110 | E |
15 | 0000 1111 | F |
16 | 0001 0000 | 10 |
17 | 0001 0001 | 11 |
18 | 0001 0010 | 12 |
19 | 0001 0011 | 13 |
20 | 0001 0100 | 14 |
21 | 0001 0101 | 15 |
22 | 0001 0110 | 16 |
23 | 0001 0111 | 17 |
24 | 0001 1000 | 18 |
25 | 0001 1001 | 19 |
26 | 0001 1010 | 1A |
27 | 0001 1011 | 1B |
28 | 0001 1100 | 1C |
29 | 0001 1101 | 1D |
30 | 0001 1110 | 1E |
31 | 0001 1111 | 1F |
32 | 0010 0000 | 20 |
33 | 0010 0001 | 21 |
34 | 0010 0010 | 22 |
35 | 0010 0011 | 23 |
36 | 0010 0100 | 24 |
37 | 0010 0101 | 25 |
38 | 0010 0110 | 26 |
39 | 0010 0111 | 27 |
40 | 0010 1000 | 28 |
41 | 0010 1001 | 29 |
42 | 0010 1010 | 2A |
43 | 0010 1011 | 2B |
44 | 0010 1100 | 2C |
45 | 0010 1101 | 2D |
46 | 0010 1110 | 2E |
47 | 0010 1111 | 2F |
48 | 0011 0000 | 30 |
あとはお察しください |
脚注[編集]
- ↑ 言語や処理目的によって差異あり。