アプリ版:「スタンプのみでお礼する」機能のリリースについて

n進数→m進数
(111010101.1111)2を16進数に変換
(1010101)2を5進数に変換
の解き方を教えて下さい。

A 回答 (2件)

> (111010101.1111)2を16進数に変換


これは基本。
小数点を基準に2進数を4桁ずつに区切る。4桁に足りない分は0を加える(整数部は左に、小数部は右に)
0001|1101|0101|.|1111
その4桁を16進数1桁に変換する。慣れると見ただけでわかるけど、それまでは
abcd
という4桁だったら
a×8 + b×4 + c×2 +d
を(10進数で)計算して、0~9はそのまま、10以上は 10=A,11=B,...15=Fとアルファベットにする
0001 = 1
1101 = 8+4+0+1=13=D
0101 = 5
1111 0 8+4+2+1=15=F
→1D5.F

>(1010101)2を5進数に変換
・まじめな方法
m進の整数は mで割ると、右に一桁ずれて、余りがもとの「mの0乗」の位になる
例)10進数で 123 ÷ 10 =12 あまり 3
商をさらにmで割れば、あまりは「mの1乗」の位になる。以下同様
でてきた「あまり」を順番にならべれば、m進数での表記になる。
(1010101)2÷5 = (10001)2 あまり 0
(10001)2÷5 = (11)2 あまり 2
(11)2÷5 = 0 あまり 3
→(320)5


・たぶん、この問題でもとめられる方法
16進にすると
(55)h
= (11)h x 5
=(16 + 1)x5
=(15+2)x5
=(3x5+2)x5
=3x5^2+2x5^1+0x5^0
=(320)5
    • good
    • 0

2進数を16進数に直すのは簡単です。


4桁ごとに区切れば良いだけです。

0001->1
1101->d
0101->5
1111->f
  ↓
(1d5.f)16

m進数の第n桁の値がaの時の値を10進数で表すと、
a * m^(n-1)
なので、
(1010101)2 = (55)16 = 5*16 + 5 = 85
= 75 + 10 = 3*5^2 + 2*5^1 + 0*5^0
= (320)5
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!