コンピュータは、電気が流れる・流れないのような2つの状態だけで数や文字を表すので、数を0と1だけで書く2進数が基本になります。
2進数の表し方と位の重み
ふだん使う10進数は、0〜9の10種類の数字を使い、左へ1桁進むごとに位が10倍(1の位・10の位・100の位…)になります。 2進数は0と1の2種類だけを使い、左へ1桁進むごとに位が2倍(1の位・2の位・4の位・8の位…)になります。 この「何種類の数字で、何倍ずつ位が上がるか」の数を基数といい、10進数の基数は10、2進数の基数は2です。 2進数の1桁をビットと呼びます。
位の大きさを重みといいます。右端の桁を1番目と数えると、i 番目の桁の重みは 2 の (i-1) 乗です(1番目は2の0乗=1、2番目は2の1乗=2、3番目は2の2乗=4)。 2進数の値は、各桁の「値×重み」をすべて足したものです。
各桁の値に位の重みをかけて足すと、10進数の値になります。
2進数 1101 を10進数に直す 1×8 + 1×4 + 0×2 + 1×1 = 8 + 4 + 0 + 1 = 13
同じ計算を、合計を0から始めて、右端の桁から1つずつ「桁の値×その桁の重み」を足し込んでいく手順でも行えます。プログラムで変換するときはこの形になります。
1101 を右端の桁から順に足し込む(合計の初めは0) 1番目の桁 1、重み 2の0乗=1 → 合計 0+1×1=1 2番目の桁 0、重み 2の1乗=2 → 合計 1+0×2=1 3番目の桁 1、重み 2の2乗=4 → 合計 1+1×4=5 4番目の桁 1、重み 2の3乗=8 → 合計 5+1×8=13
桁数(ビット数)が決まると、表せる数の範囲も決まります。1ビットは0か1の2通りで、ビットが1つ増えるごとに組合せは2倍になるので、n ビットで 2 の n 乗通りです。 0から数えるので、表せる最大の数は 2 の n 乗-1 です。
3ビット:2の3乗=8通り → 000〜111 = 0〜7 8ビット:2の8乗=256通り → 0〜255
8ビットを1バイトと呼びます(バイトとビットの換算は 16-2 データ通信と制御)。
基数変換(10進数・2進数・16進数)
ある基数で書いた数を、別の基数の書き方に直すことを基数変換といいます。2進数から10進数へは、前の節のとおり「値×重み」を足します。 逆に10進数から2進数へは、商が0になるまで2で割り続け、余りを下から順に並べます。
商が0になるまで2で割り、余りを下から読みます。
10進数 22 を2進数に直す 22÷2=11 余り0 11÷2=5 余り1 5÷2=2 余り1 2÷2=1 余り0 1÷2=0 余り1 余りを下から読む → 10110 検算:16+4+2=22
最初の割り算の余りが1の位、最後の割り算の余りがいちばん上の桁です。だから下から読みます。
2進数は桁が長くなるので、人が読み書きするときは16進数もよく使います。16進数は0〜9に続けて A〜F を使い、A=10、B=11、C=12、D=13、E=14、F=15 を表します。 2進数4桁(0000〜1111)は0〜15の16通りなので、2進数を右から4桁ずつ区切ると、1区切りが16進数の1桁になります。
2進数 10110110 を16進数に直す 右から4桁ずつ区切る → 1011 と 0110 1011 = 8+2+1 = 11 → B 0110 = 4+2 = 6 → 6 答え:B6 検算:B6 = 11×16 + 6×1 = 176+6 = 182 10110110 = 128+32+16+4+2 = 182
16進数の重みは、右から1・16・256…と16倍ずつ上がります。
ある機械は、5つのランプの点灯(1)と消灯(0)で状態の番号を知らせます。左から「点灯・消灯・消灯・点灯・点灯」、つまり2進数の 10011 のとき、状態の番号を10進数で表すといくつですか。
× 左端を1の位として読んでいます(11001 として計算すると 16+8+1=25)。重みが1なのは右端の桁です。
× 点灯しているランプの数を数えただけです。どの位の1かによって、表す大きさが違います。
○ 正解 19です。
右から重みは1・2・4・8・16です。1×16+0×8+0×4+1×2+1×1=16+0+0+2+1=19 です。
× 右端の重みを2から始めています(32+4+2=38)。右端の重みは 2 の0乗=1 です。
2進数の足し算と引き算
2進数の足し算も、10進数と同じく右の桁から順に行います。違うのは、桁の合計が2になった時点で繰り上がることです。1+1 は10進数の2で、2進数では 10 と書きます。
桁の合計が2か3になると、上の桁へ1繰り上がります。
1つの桁の決め方(下の桁からの繰り上がりも足した合計で決める)
合計が0か1 … その値がこの桁に残る。繰り上がりは無い
合計が2 … この桁は0、上の桁へ1繰り上がる
合計が3 … この桁は1、上の桁へ1繰り上がる(1+1に、下からの繰り上がり1が加わったとき)
1011 + 0111 を計算する(1011=11、0111=7) 1の位:1+1=2 → この桁0、上へ1 2の位:1+1+繰り上がり1=3 → この桁1、上へ1 4の位:0+1+繰り上がり1=2 → この桁0、上へ1 8の位:1+0+繰り上がり1=2 → この桁0、上へ1 16の位:繰り上がり1 → 1 答え:10010 検算:16+2=18、11+7=18
4桁どうしを足しても、答えが5桁になることがあります。
3通りは、桁の合計を2で割った商と余りと見ることもできます。商が上の桁への繰り上がり、余りがこの桁に残る値です(合計3なら 3÷2=1 余り1 で、この桁は1、繰り上がりは1)。 10進数で桁の合計が10以上になると繰り上がるのと同じしくみで、2進数では境目が2になるだけです。 表計算ソフトで足し算を組むときも、1つのセルに1桁を受け持たせ、その桁の合計が3通りのどれにあたるかで表示する値を分けます(合計や IF などの関数の書き方は 13-2 デジタルツールの活用)。
引き算では、引けない桁は1つ上の桁から1を借ります。上の桁の1は、1つ下の桁では2にあたります。
1101 - 0110 を計算する(1101=13、0110=6) 1の位:1-0=1 2の位:0-1 は引けない → 4の位から1を借りて2にする → 2-1=1 4の位:貸したので1→0。0-1 は引けない → 8の位から借りて2にする → 2-1=1 8の位:貸したので1→0。0-0=0 答え:0111 検算:4+2+1=7、13-6=7
集合とベン図
集合は、「英語を話せる社員」のように、条件に当てはまるものの集まりです。 「12は3の倍数である」のように、正しい(真)か誤り(偽)かがはっきり決まる文を命題といいます。 ある社員が「英語を話せる」という命題が真になる社員を集めたものが、英語を話せる社員の集合です。 集合どうしの関係は、円を重ねたベン図で描くと一目で分かります。
塗った部分が、それぞれの集合にあたります。
集合の組み合わせ方
和集合 … A と B の少なくとも一方に入るもの(AまたはB)
積集合 … A と B の両方に入るもの(AかつB)。ベン図の重なり
補集合 … A に入らないもの(Aでない)。全体から A を除いた残り
差集合 … A に入るが B には入らないもの(AだがBでない)
数を数えるときに気をつけたいのは、重なりの部分です。A と B の数をそのまま足すと、両方に入るものを2回数えてしまいます。 和集合の数は、A の数+B の数から、重なり(積集合)の数を1回引いて求めます。
社員100人。英語を話せる40人、中国語を話せる25人、両方を話せる10人 どちらかを話せる(和集合):40+25-10=55人 どちらも話せない(和集合の補集合):100-55=45人 英語だけを話せる(差集合):40-10=30人
表のデータを組み合わせる和・積・差の操作は、17-3 データ操作でも使います。
論理演算と真理値表
「成り立つ(真)」を1、「成り立たない(偽)」を0で表し、条件どうしを組み合わせる計算を論理演算といいます。 基本は次の4つです。
基本の論理演算
AND(論理積) … A と B が両方1のときだけ1。ベン図の積集合
OR(論理和) … A と B の少なくとも1つが1なら1。ベン図の和集合
NOT(否定) … 1と0を入れ替える。ベン図の補集合
XOR(排他的論理和) … A と B が違うとき(どちらか一方だけが1)に1。ベン図では重なりを除いた部分
入力のすべての組み合わせについて結果を並べた表を真理値表といいます。2つの入力なら組み合わせは4通りです。 OR と XOR は、両方が1の行だけが違います(OR は1、XOR は0)。
A B | AND OR XOR 0 0 | 0 0 0 0 1 | 0 1 1 1 0 | 0 1 1 1 1 | 1 1 0 A | NOT A 0 | 1 1 | 0
論理演算は、文書やデータの条件検索でそのまま使います。「東京」を含む文書が50件、「大阪」を含む文書が40件、両方を含む文書が15件あるとき、件数は次のとおりです。
東京 AND 大阪(両方を含む):15件 東京 OR 大阪(少なくとも一方を含む):50+40-15=75件 東京 AND NOT 大阪(東京を含み、大阪を含まない):50-15=35件 東京 XOR 大阪(どちらか一方だけを含む):75-15=60件
XOR は、OR の件数から両方を含む件数を引いたものです(50+40-15×2 と計算しても同じ60件)。
表計算ソフトでも同じ考え方の関数を使います。論理和(条件1, 条件2, …) は条件のうち1つでも成り立てば成り立ち、論理積(条件1, 条件2, …) は全部が成り立つときだけ成り立ちます。条件は3つ以上並べられます。 IF(条件, 成り立つときの値, 成り立たないときの値) と組み合わせると、「AまたはB(またはC)なら◯◯と表示する」という式になります(詳しくは 13-2)。
社内の文書を検索したところ、「AI」を含む文書が120件、「セキュリティ」を含む文書が80件、両方を含む文書が30件でした。 「AI」と「セキュリティ」のどちらか一方だけを含む文書は何件ですか。
○ 正解 140件です。
どちらか一方だけは XOR です。少なくとも一方を含む(OR)のは 120+80-30=170件で、そこから両方を含む30件を引いて 170-30=140件です。
× OR(少なくとも一方を含む)の件数です。両方を含む30件も入っています。
× 120と80をそのまま足しています。両方を含む30件を2回数えています。
× AND(両方を含む)の件数です。どちらか一方だけを含む文書とは、ちょうど反対の部分です。
まとめ
この回で持ち帰ること
1. 2進数は0と1だけで書き、位は左へ1桁ごとに2倍。右から i 番目の桁の重みは 2 の (i-1) 乗。値は「桁の値×重み」の合計
2. n ビットで 2 の n 乗通り、0〜2 の n 乗-1 を表せる。8ビット=1バイトで0〜255
3. 10進数→2進数は、2で割り続けて余りを下から読む。2進数4桁が16進数1桁(A〜F=10〜15)
4. 足し算は桁の合計(繰り上がりを含む)が0か1ならそのまま、2なら0で繰り上がり、3なら1で繰り上がり。引き算は上の桁から借りると2になる
5. 和集合=または、積集合=かつ、補集合=でない、差集合=AだがBでない。和集合の数=A+B-重なり
6. AND=両方、OR=少なくとも1つ、NOT=反対、XOR=どちらか一方だけ。OR と XOR は両方が1のときだけ違う
この節で解ける公開問題
令和4〜8年度の公開問題のうち、この節の知識が決め手になる問題は次の3問です。
教科書の一覧(現行の試験の順)教科書の一覧(新しい試験の順)過去問
Udemy の ITパスポート講座を、受講者数・★評価・口コミで比べたページです(広告を含みます)。
出典:IPA「ITパスポート試験 シラバス Ver6.5」、IPA「試験で使用する情報技術に関する用語・プログラム言語など Ver.5.1」別紙3「表計算ソフトの機能・用語(ITパスポート試験用)」。 練習問題は当サイトが説明のために作ったものです。

