pafuイーランスクール 学んでできる

Web学習室TOPへ戻る >  メニューへ戻る

基数変換と負の数の表現(基礎理論)

学習のポイント

コンピュータ内部では、ビットの「オン」「オフ」でデータは管理されています。つまり「1」と「0」の2進数ということになります。ここでは、10進数・2進数・8進数・16進数の相互の基数変換をマスターし、補数を使用した「負の数」の表現についてマスターします。

1. 基数とは?
基数とは、数値の各桁の位取りの基準となる数のことで、私たちが、普段の使用している「10進数」は、「10倍」ごとに桁が上がっていくので、「基数は10」となります。
各桁の重みは、基数「10」を使用して以下のようになります。

・1桁目…100 = 1
・2桁目…101 = 10
・3桁目…102 = 100
・4桁目…103 = 1000
  …
・n桁目…10n-1

となります。ここで「n0=1」となります。

例えば、6253の10進数は、(6253)10と表現します。

(6253)10 = 6×103 + 2×102 + 5×101 + 3×100
= 6000 + 200 +50 +3
= 6253

となります。
2. n進数から10進数への変換

n進数から10進数の変換
n進数の基数を「各桁の重み×各桁の値」を「加算」する。

2進数から10進数への変換
(1011)2 = 1×23+0×22+1×21+1×20 = 8+0+2+1 = (11)10
※0乗は「1」となります。
8進数から10進数への変換
(365)8 = 3×82+6×81+5×80 = 192 + 48 + 5 = (245)10
16進数から10進数への変換
(365)16 = 3×162+6×161+5×160 = 768 + 96 + 5 = (869)10
小数の場合
(0.101)2 = 1×2-1+0×2-2+1×2-3 = 0.5+0+0.125 = (0.625)10
(0.AF)16 = A×16-1+F×16-2 = 10×0.0625+15×0.00390625 = (0.683559375)10
整数と小数の場合はそれぞれ分けて変換します。 
3. 10進数からn進数への変換
これは、対象の10進数をnで割り算を行い、この商がnより小さくなるまで繰り返して、余りを右に倒します。下記の例は、10進数39を2進数へ変換した過程です。
2 39 余り --->余りを右へ倒す
2 19 1
2 9 1
2 4 1
2 2 0
  1 0
上記の余りを右へ倒して、(100111)2となります。8進数(8で割り算)と16進数(16で割り算)も同様です。

小数の場合
小数の場合は、対象の10進数をnで乗じてして整数部を順次取り出します。この処理を小数部が「0」になるまで繰り返します
(0.375)10を2進数へ変換する場合
0.375×2=0.75
0.75×2=1.5
0.5×2=1.0
よって、上記の太字の部分を上から並べて、(0.011)2となります。
(0.8046875)10の16進数へ変換する場合
0.8046875×16=12.875
0.875×16=14.000
よって、(0.CE)16
※小数の場合は、必ず変換出来るとは限りません。この場合は、無限小数となります。例えば、10進数で有限小数を2進数へ変換した場合、必ず有限桁で表現出来るとは限りません。
4. 2進数から16進数・8進数への変換
●2進数から16進数への変換

2進数を4桁ずつ区切り、それぞれを10進数へ変換する

(1101110)2
110と1110の4桁にします。110は0110と同じです。
「0110」を10進数へ変換すると「6」
「1110」を10進数へ変換すると「14」、14は16進数で「E」となり
(1101110)2 = (6E)16

●2進数から8進数への変換

2進数を3桁ずつ区切り、それぞれを10進数へ変換する

(1101110)2
1と101と110の3桁にします。1は001と同じです。
「001」を10進数へ変換すると「1」
「101」を10進数へ変換すると「5」
「110」を10進数へ変換すると「6」となり、
(1101110)2 = (156)8
5. 基数変換の桁数
まず、前提知識として指数と対数について学習します。
AX = B これを対数を使用すると、logAB = X 
ここで、logAB のAのことを「」と言います。
例えば、
24 = 16 は、対数(log)を使用すると、log216 = 4 となります。
対数には、5個の公式があります。これは覚えて置きましょう。
対数(log)の公式
logA1 = 0
logAA = 1
logAMN = logAM + logAN
logAM/N = logAM - logAN
logAMP = PlogAM

一般にx進数のn桁の最大値は、xn-1となります。
2進数3桁の場合は、23-1
8進数3桁の場合は、83-1
16進数3桁の場合は、163-1
10進数3桁の場合は、103-1
ここで、10進数の10桁は2進数では何桁(x)になるか求めて見ましょう。
1010-1 = 2x-1
1010 = 2x
Log101010=Log102x
Log101010 = 10×Log1010 = 10×1=10
Log102x = x×Log102
よって、10 = x×Log102
ここで、Log102は約0.301です。
よって、x = 10 ÷ 0.301 = 約33.2
ここでxは整数のため、34桁が解答となります。

14けたの16進数の最大値は、10進数であらわすと何けたか。ここで、log102=0.301とする。
回答群は・・・・ア 15   イ 16    ウ 17     エ 18
(解説)
10進数の桁数をXとすると、
1614 - 1 = 10x -1
1614 = 10x
ここで両辺の対数をとると、
log101614 = log1010x となります。
左辺は
log101614 = 14×log1016 = 14×log1024 = 14×(0.301)×4 = 14×1.204 = 16.856
右辺は
log1010x = x × log1010 = x × 1 = x
よって、
x = 16.856 で16を超えているため、解答は、17のウとなります。   
6. 負の数の表現(補数)
コンピュータの内部での「負の数の表現」では「補数」を使用します。「補数」とは、「ある基準となる値からいくつ不足しているか」を表現したものです。補数には、2種類あり、「n進数」の補数の場合、「nの補数」と「n-1の補数」があります。
例えば、10進数の場合は、「10の補数」と(10-1)=「9の補数」があります

n進数のm桁の数字の場合
●「nの補数」の求め方
m桁の最大値より1大きい数-もとのm桁の数字」から引き算を行います。
●「n-1の補数」の求め方
m桁の最大値-もとのm桁の数字」から引き算を行います。
以下、例を示します。

●10進数の場合(.365の補数を求める)
・10の補数
1000 - 365 = 635
・9の補数
999 - 365 = 634
●2進数の場合(01011011の補数を求める)
・2の補数(n桁の最大値より1大きい数-もとの2進数)
100000000 - 01011011 = 10100101
・1の補数(n桁の最大値-もとの2進数)
11111111 - 01011011 = 10100100
※(テクニック)
2進数で1の補数を求める場合は、元の2進数のビットを反転させて求められます。従って簡単に求めるには、前述のようにしてビットを反転させて、1の補数を求め、+1すれば2の補数となります
2の補数の絶対値を求めるには、以下のようにします。
・ビットの0と1を反転する
・上記に1を加算する
これで、絶対値となります。
●16進数の場合(ADFの補数を求める)
16の補数
1000 - ADF = 521
15の補数
FFF - ADF = 520

「補数」を使用する理由は以下の点にあります。
減算を加算回路で行うことができるため。
Web学習室TOPへ戻る >  メニューへ戻る

pafuイーランスクール

pafuイーランスクール 学んでできる