補助資料

補助資料
補助資料
1 / 23
10 進数から 2 進数(整数編)
例題
10 進数で 183 を 2 進数に変換せよ.
【解答】183(10) = 10110111(2)
【解法】商が 0 になるまで 2 で割り続け,余りを最後から逆順に並べる.
183/2 = 91...1
91/2 = 45...1
45/2 = 22..1
22/2 = 11...0
11/2 = 5...1
5/2 = 2...1
2/2 = 1...0
1/2 = 0...1
補助資料
2 / 23
10 進数から 8 進数(整数編)
例題
10 進数で 183 を 8 進数に変換せよ.
【解答】183(10) = 267(8)
【解法 1】商が 0 になるまで 8 で割り続け,余りを最後から逆順に並べる.
183/8 = 22...7
22/8 = 2...6
2/8 = 0..2
【解法 2】2 進数を求めてから 3bit ごと区切ってそれぞれ変換する.
183(10) = 10110111(2) = 010 110 111(2) = 267(8)
010(2) = 2(10) = 2(8) , 110(2) = 6(10) = 6(8) , 111(2) = 7(10) = 7(8)
補助資料
3 / 23
10 進数から 16 進数(整数編)
例題
10 進数で 183 を 16 進数に変換せよ.
【解答】183(10) = B7(16)
【解法 1】商が 0 になるまで 16 で割り続け,余りを最後から逆順に並
べる.
183/16 = 11...7
11/16 = 0...11
ただし,10 から 15 の数字はそれぞれ A から F に対応することに注意.
【解法 2】2 進数を求めてから 4bit ごと区切ってそれぞれ変換する.
183(10) = 10110111(2) = 1011 0111(2) = B7(16)
1011(2) = 11(10) = B(16) , 0111(2) = 7(10) = 7(16)
補助資料
4 / 23
2 進数から 10 進数(整数編)
例題
2 進数の 11010010 を 10 進数に変換せよ.
【解答】11010010(2) = 210(10)
【解法】下の桁から順に 20 , 21 , . . . と,各 bit を掛け合わせて合計する.
20 × 0 = 1 × 0 = 0
21 × 1 = 2 × 1 = 2
22 × 0 = 4 × 0 = 0
23 × 0 = 8 × 0 = 0
24 × 1 = 16 × 1 = 16
25 × 0 = 32 × 0 = 0
26 × 1 = 64 × 1 = 64
27 × 1 = 128 × 1 = 128
128 + 64 + 16 + 2 = 210
補助資料
5 / 23
8 進数から 10 進数(整数編)
例題
8 進数の 322 を 10 進数に変換せよ.
【解答】322(8) = 210(10)
【解法】下の桁から順に 80 , 81 , . . . と,各桁を掛け合わせて合計する.
80 × 2 = 1 × 1 = 2
81 × 2 = 8 × 2 = 16
82 × 3 = 64 × 3 = 192
192 + 16 + 2 = 210
もちろん 2 進数に変換してから計算してもよいが煩雑になるのでおすす
めしない.
補助資料
6 / 23
16 進数から 10 進数(整数編)
例題
16 進数の D2 を 10 進数に変換せよ.
【解答】D2(16) = 210(10)
【解法】下の桁から順に 160 , 161 , . . . と,各桁を掛け合わせて合計する.
160 × 2 = 1 × 2 = 2
161 × D = 16 × 13 = 208
208 + 2 = 210
もちろん 2 進数に変換してから計算してもよいが煩雑になるのでおすす
めしない.
補助資料
7 / 23
16 進数から 8 進数(整数編)
例題
16 進数の D2 を 8 進数に変換せよ.
【解答】D2(16) = 322(8)
【解法】まず,16 進数を 2 進数に変換して,それを 8 進数に変換すれば
よい.16 進数から 2 進数への変換は,10 進数から 16 進数への解法 2 の
逆を考えればよいので,各桁を 2 進数の 4bit に変換する.
D2(16) = 1101 0010(2)
= 011 010 010(2)
= 322(8)
8 進数から 16 進数の変換はこの逆を行えばいいので省略.
補助資料
8 / 23
10 進数から 2 進数(大きな整数編)
例題
10 進数の 19287 を 2 進数に変換せよ.
【解答】19287(10) = 0100101101100111(2)
【解法】大きい整数は,まず 16 進数に変換してから,2 進数に変換.
19287/16 = 1205...7
1205/16 = 75...6
75/16 = 4...11
4/16 = 0...4
19287(10) = 4B67(16)
= 0100 1011 0110 0111(2)
= 0100101101100111(2)
2 進数から 10 進数に変換する場合も桁数が多ければ,16 進数に変換して
からの方が楽なことがある.
補助資料
9 / 23
2 進数から 10 進数(長い bit 編)
例題
2 進数の 1011010100010101 を 10 進数に変換せよ.
【解答】1011010100010101(2) = 46357(10)
【解法】まず 16 進数に変換する.
1011010100010101(2) = 1011 0101 0001 0101(2)
= B515
これを 10 進数に変換する.
160 × 5 = 1 × 5 = 5
161 × 1 = 16 × 1 = 16
162 × 5 = 256 × 5 = 1280
163 × B = 4096 × 11 = 45056
45056 + 1280 + 16 + 5 = 46357
補助資料
10 / 23
10 進数から 2 進数(少数編)
例題
10 進数で 0.15625 を 2 進数に変換せよ.
【解答】0.15625(10) = 0.00101(2)
【解法】少数部分にのみ 2 を掛けて,整数部分に 1 が出れば 1 を,そうで
なければ 0 を小数点の上位から順に決めていく.最後に 1 ちょうどにな
れば終了だが,延々続く可能性もある.
0.15625 × 2 = 0.31250 → 0
0.3125 × 2 = 0.625 → 0
0.625 × 2 = 1.25 → 1
0.25 × 2 = 0.5 → 0
0.5 × 2 = 1 → 1
補助資料
11 / 23
2 進数から 10 進数(少数編)
例題
2 進数で 0.00101 を 10 進数に変換せよ.
【解答】0.00101(2) = 0.15625(10)
【解法】小数点以下第 1 位から順に,2−1 , 2−2 , . . . と各 bit を掛け合わせ
て合計する.
2−1 × 0 = 0.5 × 0 = 0
2−2 × 0 = 0.25 × 0 = 0
2−3 × 1 = 0.125 × 1 = 0.125
2−4 × 0 = 0.0625 × 0 = 0.0625
2−5 × 1 = 0.03125 × 1 = 0.03125
0.125 + 0.03125 = 0.15625
補助資料
12 / 23
10 進数から 2 進数(実数編)
例題
10 進数で 13.15625 を 2 進数に変換せよ
【解答】13.15625(10) = 1101.00101(2)
【解法】整数部分と少数部分に分けて考えればよい.13 を 2 進数に変換
し,0.15625 を 2 進数に変換したものを足し合わせればよい.整数部分,
少数部分の 2 進数への変換はこれまでの方法と同じ.2 進数から 10 進数
への変換も同様.
13(10) = 1101(2)
0.15625(10) = 0.00101(2)
補助資料
13 / 23
2 の補数表現
例題
10 進数で-116 を 8bit の 2 の補数表現に変換せよ.
【解答】−116(10) = 10001100(2)
【解法】まず,116 の 8bit2 進表現を求める.
116(10) = 01110100(2)
次に,下の桁からみて最初の 1 の左側にある全ての bit を反転させる.
01110100 → 10001100
これが-116 の 2 の補数表現になっている.左と右の 2 進数を足せば,1bit
目から 8bit 目までは全て 0 になることを確かめてみるとよい.
補助資料
14 / 23
2 の補数表現
例題
8bit の 2 の補数表現で 10001100 を 10 進数に変換せよ.
【解答】10001100(2) = −116(10)
【解法】まず,一番左の bit を確認する.今,1 なので,これは負の整数
を表していることがわかる.次に,2 の補数表現の下の桁からみて最初の
1 の左側にある全ての bit を反転させる.
10001100 → 01110100
次に,得られた 2 進表現から対応する 10 進数を求める.
01110100(2) → 116(10)
よって,-116 の 2 の補数表現であったことがわかる.
補助資料
15 / 23
2 の補数表現
例題
8bit の 2 の補数表現で 01110100 を 10 進数に変換せよ.
【解答】01110100(2) = 116(10)
【解法】まず,一番左の bit を確認する.今,0 なので,これは正の整数
を表していることがわかる.この場合,そのまま 10 進数に変換すれば答
えがでる.
補助資料
16 / 23
2 の補数表現
例題
8bit の 2 の補数表現で 10000000 を 10 進数に変換せよ.
【解答】10000000(2) = −256(10)
【解法】一番左の bit が 1 で,残りが全て 0 の場合は 2 の bit 数乗の値に
マイナスをつけた数字が 10 進数に対応する.今なら,8bit なので,
28 = 256 となるので,-256 が 10 進表現.
補助資料
17 / 23
浮動小数点
例題
IEEE794 規格の浮動小数点 13.15625 を 2 進数に変換せよ.
【解答】 01000001010100101000000000000000
【解法】まず,13.15625 を 2 進数に変換する.
13.15625(10) = 1101.00101(2)
これを,(−1)S · 2E−127 · (1 + F × 2−23 ) の形に変形する.
1101.00101 = 1.10100101 · 23
= (−1)0 · 23 · (1 + 0.10100101)
= (−1)0 · 2(130−127) · (1 + 10100101000000000000000 · 2−23 )
2 を 1 回かけると小数点の位置が 1 つ下がり,2−1 をかけると小数点の位
置が 1 つあがることに注意.
補助資料
18 / 23
浮動小数点
【解法続き】
1101.00101 = (−1)0 · 2(130−127) · (1 + 10100101000000000000000 · 2−23 )
と (−1)S · 2E−127 · (1 + F × 2−23 ) を比較すると,
S = 0
E = 130(10) = 10000010(2)
F
= 10100101000000000000000(2)
あとはこれを S,E,F の順につなげれば完成.
補助資料
19 / 23
浮動小数点
例題
IEEE794 規格の浮動小数点-13.15625 を 2 進数に変換せよ.
【解答】 11000001010100101000000000000000
【解法】まず,-13.15625 を 2 進数に変換する.このときマイナスの符号
はそのままにしておく.整数部分を 2 の補数表現にしないこと!
−13.15625(10) = −1101.00101(2)
これを,(−1)S · 2E−127 · (1 + F × 2−23 ) の形に変形する.
−1101.00101 = −1.10100101 · 23
= (−1)1 · 23 · (1 + 0.10100101)
= (−1)1 · 2(130−127) · (1 + 101001010 · · · 00 · 2−23 )
2 を 1 回かけると小数点の位置が 1 つ下がり,2−1 をかけると小数点の位
置が 1 つあがることに注意.
補助資料
20 / 23
浮動小数点
【解法続き】
−1101.00101 = (−1)1 · 2(130−127) · (1 + 1010010100 · · · 00 · 2−23 )
と (−1)S · 2E−127 · (1 + F × 2−23 ) を比較すると,
S = 1
E = 130(10) = 10000010(2)
F
= 10100101000000000000000(2)
あとはこれを S,E,F の順につなげれば完成.
補助資料
21 / 23
浮動小数点
例題
IEEE794 規格の浮動小数点-0.15625 を 2 進数に変換せよ.
【解答】 10111110001000000000000000000000
【解法】まず,-0.15625 を 2 進数に変換する.このときマイナスの符号
はそのままにしておく.整数部分を 2 の補数表現にしないこと!
−0.15625(10) = −0.00101(2)
これを,(−1)S · 2E−127 · (1 + F × 2−23 ) の形に変形する.
−0.00101 = −1.01 · 2−3
= (−1)1 · 2−3 · (1 + 0.1)
= (−1)1 · 2(124−127) · (1 + 0100 · · · 00 · 2−23 )
2 を 1 回かけると小数点の位置が 1 つ下がり,2−1 をかけると小数点の位
置が 1 つあがることに注意.
補助資料
22 / 23
浮動小数点
【解法続き】
−0.00101 = (−1)1 · 2(124−127) · (1 + 0100 · · · 00 · 2−23 )
と (−1)S · 2E−127 · (1 + F × 2−23 ) を比較すると,
S = 1
E = 124(10) = 01111100(2)
F
= 01000000000000000000000(2)
あとはこれを S,E,F の順につなげれば完成.
補助資料
23 / 23