ユーザ用ツール

サイト用ツール


numericalipa:ans1

【数値情報処理a】第1回の答え

課題

以下の問に答えなさい。

(1) RStudio の自分のユーザー名を16進数の整数とみなして10進数に変換しなさい。

例えば、ユーザー名が「c123456」だったら「c123456」を16進数の整数とみなす。

(2) RStudio の自分のユーザー名の前に「0.」をつけて16進数の小数とみなして10進数に変換しなさい。

例えば、ユーザー名が「c123456」だったら「0.c123456」を16進数の小数とみなす。

(3) (2) で求めた10進数の値に $16^{7}$ をかけるといくつになるか求めなさい。

解答例

「c123456」の場合


(1)

> strtoi("c123456", 16)
[1] 202519638

もしくは、各桁を 10 進数に変換して \begin{eqnarray} a_{7}&=&(\mathrm{c})_{16}=12\\ a_{6}&=&(\mathrm{1})_{16}=1\\ a_{5}&=&(\mathrm{2})_{16}=2\\ a_{4}&=&(\mathrm{3})_{16}=3\\ a_{3}&=&(\mathrm{4})_{16}=4\\ a_{2}&=&(\mathrm{5})_{16}=5\\ a_{1}&=&(\mathrm{6})_{16}=6 \end{eqnarray} これより \begin{eqnarray} &&a_{7}\times 16^{6}+a_{6}\times 16^{5}+a_{5}\times 16^{4}+a_{4}\times 16^{3}+a_{3}\times 16^{2}+a_{2}\times 16^{1}+a_{1}\times 16^{0}\\ &=&12\times 16^{6}+1\times 16^{5}+2\times 16^{4}+3\times 16^{3}+4\times 16^{2}+5\times 16^{1}+6\times 16^{0} \end{eqnarray}

R で計算すると

> 12*16^6+1*16^5+2*16^4+3*16^3+4*16^2+5*16^1+6*16^0
[1] 202519638

(2)

16進数で桁を7桁ずらすと整数として計算できるので、(1)で求めた値が使える。 \[ (\mathrm{0.c123456})_{16}=(\mathrm{c123456})_{16}\times 16^{-7}=202519638\times 16^{-7} \]

R で計算すると

> 202519638*16^(-7)
[1] 0.7544444

デフォルトだと7桁までの表示になるので、小数第7位までしか求められない。

表示桁数を最大の 22 桁に変更すると

> print(202519638*16^(-7), digits = 22)
[1] 0.7544444426894187927246

小数第22位まで求められる。

もしくは、各桁を 10 進数に変換して \begin{eqnarray} b_{1}&=&(\mathrm{c})_{16}=12\\ b_{2}&=&(\mathrm{1})_{16}=1\\ b_{3}&=&(\mathrm{2})_{16}=2\\ b_{4}&=&(\mathrm{3})_{16}=3\\ b_{5}&=&(\mathrm{4})_{16}=4\\ b_{6}&=&(\mathrm{5})_{16}=5\\ b_{7}&=&(\mathrm{6})_{16}=6 \end{eqnarray} これより \begin{eqnarray} &&b_{1}\times 16^{-1}+b_{2}\times 16^{-2}+b_{3}\times 16^{-3}+b_{4}\times 16^{-4}+b_{5}\times 16^{-5}+b_{6}\times 16^{-6}+b_{7}\times 16^{-7}\\ &=&12\times 16^{-1}+1\times 16^{-2}+2\times 16^{-3}+3\times 16^{-4}+4\times 16^{-5}+5\times 16^{-6}+6\times 16^{-7} \end{eqnarray}

R で計算すると

> 12*16^(-1)+1*16^(-2)+2*16^(-3)+3*16^(-4)+4*16^(-5)+5*16^(-6)+6*16^(-7)
[1] 0.7544444
> print(12*16^(-1)+1*16^(-2)+2*16^(-3)+3*16^(-4)+4*16^(-5)+5*16^(-6)+6*16^(-7), digits = 22)
[1] 0.7544444426894187927246

(3)

小数第7位までを使って計算すると (1) の値と少しずれる。

> 0.7544444*16^7
[1] 202519627

小数第22位までを使って計算すると (1) の値と一致する。

> 0.7544444426894187927246*16^7
[1] 202519638
numericalipa/ans1.txt · 最終更新: by yuki