補助資料 補助資料 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
© Copyright 2024 ExpyDoc