ITパスポートで出てくる「2進数・16進数」は、実務でも、ビット演算やカラーコードとして、毎日のように目にします。試験の内容を、短いPythonのコードで確かめながら整理します。
2進数と10進数
2進数の各けたは、右から 1、2、4、8、16… を表します。
>>> int("1101", 2) # 2進数 → 10進数
13
>>> bin(13) # 10進数 → 2進数
'0b1101'
手計算では、1101 = 8 + 4 + 0 + 1 = 13 です。
16進数は、2進数の4けたをまとめたもの
16進数の1けたは、2進数の4けたに当たります。0〜9のあとは、A=10、B=11、C=12、D=13、E=14、F=15 です。
>>> int("1F", 16)
31
>>> format(31, "08b") # 8けたの2進数にそろえる
'00011111'
「1F」は、1 × 16 + 15 = 31 です。2進数では、0001 1111 で、4けたずつ区切ると、16進数の1けたに対応します。
カラーコードで確かめる
Webの色指定「#FF8800」は、赤・緑・青を、それぞれ16進数の2けた(0〜255)で表したものです。
>>> int("FF", 16), int("88", 16), int("00", 16)
(255, 136, 0)
赤が255(最大)、緑が136、青が0なので、オレンジ色になります。
ビット演算(AND・OR・XOR)
試験の「論理演算」は、ビットごとの演算として、そのまま使えます。
>>> a, b = 0b1101, 0b0110
>>> format(a & b, "04b") # AND: 両方1のところだけ1
'0100'
>>> format(a | b, "04b") # OR: どちらか1なら1
'1111'
>>> format(a ^ b, "04b") # XOR: 違うときだけ1
'1011'
実務では、ANDを「マスク」として、特定のビットだけを取り出すときに使います(権限のフラグなど)。
試験での見方
- 2進数 → 10進数: 右から1、2、4、8…を、1のところだけ足す
- 16進数 → 2進数: 1けたを、4けたの2進数に直す
- A〜Fは、10〜15
注意
試験の範囲や仕様は、変わることがあります。受験する時期の出題範囲は、IPAの公式サイトで確認してください。
この記事の文章作成には、AIを活用しています(コードの結果は、筆者が確認しています)。
もう少し、たとえ話でやさしく読みたい方は、こちらもどうぞ(無料)。
- 2進数・16進数は「スイッチ」で覚える(note): https://note.com/kumomachi_lab/n/n8d38d214e257
- ITパスポート 単元別ガイド: https://yhy-coding.github.io/info-sites/it-shikaku/itpass-units/index.html