DOUBLE BOGEY

かけだしITエンジニアの苦悩と歓喜をつづります

基本情報技術者試験【1日目】情報の表現・基数変換

主にやること

  • 情報量の単位の整理

  • 2進数、8進数、16進数、10進数のお互いへの基数変換のやり方の整理

かかった時間

2時間半くらい

ノート

※最低限太字の部分だけ覚えとけばOK

コンピュータ内部では電気信号の「ON」,「OFF」の組み合わせですべての情報を表す。 →ON/OFFを2進数の0/1に対応させ、表現する。

情報量の単位

コンピュータで表す最小の単位をbitといい、2進数の1桁に相当する。

bitを8個集めたものをbyteといい、2進数8桁に相当する。

ON→ 1

OFF→0

↑これらが8個集まったものが情報の基本単位の1byte(1byteは8bit)

●接頭辞

byteは略してBと表される。

B×1000 → k(キロ) k×1000 → M(メガ) M×1000 → G(ギガ) G×1000 → T(テラ) …B×1012倍→T

B×1/1000 → m(ミリ) m×1/1000 → μ(マイクロ) μ×1/1000 → n(ナノ) n×1/1000 → p(ピコ) …B×1/1000-12→p

※コンピュータは処理速度が非常に速いので、時間を表すときによくm以下の単位が利用される。

●表現できる情報量

1bitで表現できる量 → 0,1の2通り 2bitで表現できる量 → 00,01,10,11の4通り 8bitで表現できる量 → 28で256通り nbitで表現できる量 → 2n通り

文字コード

文字1つ1つに特定の2進数が割り当てられておりその値から文字を割り出す仕組み。 文字化けはある文字コードと別の文字コードの間で同じ2進数の値に別の文字が割り当てられているためにおこる現象。

・代表的な文字コード

  • ASCII(アスキー)  英数字と特殊文字のみ。

  • SHIFT-JIS  ASCIIコードと漢字・かなが混在可能。

  • EUC  UNIX,LINUXなどで用いられる。漢字・かなが使える。

  • UNICODE  世界の文字の多くをこの規格で表現できる。UTF-8UNICODEの一つ。

基数変換

●基数と重み まずは10進数で考えてみる。 10進数の重みは 1桁目 100 = 1 2桁目 101 = 10 8桁目 107 = 10000000 n桁目 10n-1

例えば、以下のような数字があるとする。 32 1桁目 2×1("1"は重み) = 2 2桁目 3×10("10"は重み) = 30 つまり、2+30で32を表す。

・2進数の重みと2→10進数への変換 10進数に倣って2進数を考えてみる。 2進数の重みは 1桁目 20 = 1 2桁目 21 = 2 3桁目 22 = 4 n桁目 2n-1

例えば以下のような数字があるとする。これを10進数に対応させると 11 1桁目 1×1 = 1 2桁目 1×1 = 2 つまり、1+2で3を表す。

10 1桁目 0×1 = 0 2桁目 1×2 = 2 つまり、0+2で2を表す。

10111100 1桁目 0×1 2桁目 0×2 3桁目 1×4 4桁目 1×8 5桁目 1×16 6桁目 1×32 7桁目 0×64 8桁目 1×128 つまり、0+0+4+8+16+32+0+128で188を表す。

小数について考えると… まずは10進数で考えてみる。 10進数の重みは -1桁目 10-1 = 1/10 -2桁目 10-10 = 1/100 -3桁目 10-100 = 1/1000 -8桁目 1010000000 = 1/10000000 -n桁目 10^-(n-1)

例えば以下のような数字があるとする。 0.32 -1桁目 3×0.1 = 0.3 -2桁目 2×0.01 = 0.02 つまり、0.3+0,02で0.32を表す。

10進数に倣って2進数を考えてみる。 2進数の重みは -1桁目 2-1 = 1/2 -2桁目 2-2 = 1/4 -3桁目 2-4 = 1/8 -n桁目 2^-(n-1)

例えば以下のような数字があるとする。これを10進数に対応させると 0.11 -1桁目 1×1/2 = 1/2 -2桁目 1×1/4 = 1/4 つまり、1/2+1/4で3/4を表す。

0.10 1桁目 0×1/2 = 0 2桁目 1×1/4 = 1/4 つまり、0+1/4で1/4を表す。

10111100 1桁目 0×1/2 2桁目 0×1/4 3桁目 1×1/8 4桁目 1×1/16 5桁目 1×1/32 6桁目 1×1/64 7桁目 0×1/128 8桁目 1×1/256 つまり、0+0+1/8+1/16+1/32+1/64+0+1/256で61/256を表す。

・10→2進数への変換 重みから考える方法 一番重みの大きい桁が存在するか考える。 例えば、5.625という10進数の数字があるとする。 5.625 存在しうる2進数の最大の重みは10進数の4=2進数の100 これを取り除くと1.625

次に存在しうる2進数の最大の重みは10進数の1=2進数の1 これを取り除くと0.625

次に存在しうる2進数の最大の重みは10進数の05.=2進数の0.1 これを取り除くと0.125

次に存在しうる2進数の最大の重みは10進数の0.125.=2進数の0.001 これを取り除くと0

つまり、10進数の5.625は2進数では101.101に相当する。

割り算と掛け算で考える方法 まずは整数部と小数部に分ける。 整数部…基数で割った商を求め、その商を更に基数で割り、その最後の商と余りを下から並べていく 小数部…基数をかけた積を求め、その小数部を更に基数でかけ、その整数部を下から並べていく。 5.625 整数部 5/2=2…1 2/2=1…0 つまり、101

小数部 0.625×2=1.250 0.250×2=0.5 0.5×2=1.0 つまり、0.101

整数部と小数部を合わせて101.101

・2→8進数への変換 2進数の3桁は8進数の1桁に対応していることを利用し、 小数点を基準に3桁ずつ区切って、それぞれを8進数で表す。3桁にならない場合0を補う。 2進数1100.01を8進数に変換する 001 / 100 . 010 1 4 . 2

・2→16進数への変換 2進数の4桁は16進数の1桁に対応していることを利用し、 小数点を基準に4桁ずつ区切って、それぞれを16進数で表す。4桁にならない場合0を補う。 2進数1100.01を16進数に変換する 1100 . 0100 C . 4

※8→2進数、16→2進数への変換はこれらの逆を考える。