以下の問に答えなさい。
(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