2進法と16進法
Cの絵本
もう10回ぐらいプログラミングには挫折してるけど、11回目ぐらいの再挑戦をしてみてる昨今。
そんなゆるふわ脳な私なんやけど、id:Trapezoid がオススメしてくれた「Cの絵本」って本があまりにも名著!これならイケるかも!そんな気がしています。
- 作者: アンク
- 出版社/メーカー: 翔泳社
- 発売日: 2002/03
- メディア: 単行本
- 購入: 4人 クリック: 40回
- この商品を含むブログ (16件) を見る
2進数
えと、コンピュータは電化製品(?)なので、オンとオフでものを考えます。それを0と1として、二進数をつかうのです。私が調子悪いときにうっかり陥っちゃう「ゼロヒャクな考え方」みたい。
・・・だけど一応人間なので、日頃は10進法でモノを考えます。「人間が10進法でモノを考えるのは、人間の指が10本だから」ってトリビアに地味にびっくり。
というわけで、2進数で数を数えた場合の10進法との対応表はこちら。
10進法 | 2進法 |
---|---|
0 | 0 |
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
8 | 1000 |
9 | 1001 |
10 | 1010 |
11 | 1011 |
12 | 1100 |
13 | 1101 |
14 | 1110 |
15 | 1111 |
16 | 10000 |
ここらへんで、ちょっと無理に気付いてみると。ケタ数があがってるのって、2と4と8と16と・・・っていう2の累乗やねんな。これぞ2進数!
つまり、例えば2進数の「10101010」という数は
10101010(2進法)= (2**7)*1 + (2**6)*0 + (2**5)*1 + (2**4)*0 + (2**3)*1 + (2**2)*0 + (2**1)*1 + 2**0*0
= 128 + 32 + 8 + 2
= 170(10進数) なのデス!
10進数を2進法に変換するライフハック(笑)
今度は逆に、2で割っていき、余りを求め、余りを下から上へ並べたらいいそうデス。
16進数
2進数だと冗長になるので、16進数を使うのが一般的であるらしい。
16進数で使うのは、「0 1 2 3 4 5 6 7 8 9 A B C D E F 」の16コ。
2進数を4ケタずつ区切り、この2進数の4ケタで表せていた2**4 =16コの数を置き換えて表現するねんて。
つまり、下のようになります。
10進法 | 2進法 | 16進法 |
---|---|---|
0 | 0 | 0 |
1 | 1 | 1 |
2 | 10 | 2 |
3 | 11 | 3 |
4 | 100 | 4 |
5 | 101 | 5 |
6 | 110 | 6 |
7 | 111 | 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 |
16 | 10000 | 10 |
170(10進数)= 10101010(2進数)=AA(16進数)
というわけなのですっ。
身近な16進数表記
日々 photoshop elements で色を変えるときとかに、黒と白の 000000 と ffffff はもう覚えちゃってたけど、これは 24bitカラー(=16777216色)の16進数表記だね実は。
某求人の「0x22歳まで」っていうのは、16進数の「2」は2進数で「10」だから、22(16進法)=「0010 0010」(2進法)=34(10進法) ということだったのです。
34才まで平気とは、けっこう親切なかんじですね( ´∀`)!