[0360] 演算による整数桁の取り出し

平成14年度春期 初級システムアドミニストレータ試験より
2002年4月21日という日付データを、20020421 のように 8けたの 10進数として、データベースに格納してある。この数値(D)を読み込んで月の部分を取り出すには、どの計算式を用いればよいか。ここで、 x / y は x を y で割った商(小数部分は切捨て)を、x % y は x を y で割った余りを表すものとする。
( D % 10000 ) % 100
( D % 10000 ) / 100
( D / 10000 ) % 100
( D / 10000 ) / 100

正解

解説

 20020421 というデータのうち、左から 5桁目、6桁目を計算式によって取り出します。問題文にあるとおり、「 / 」の演算では小数点以下が切り捨てられることに注意してください。

 まず、月日のみを取り出す操作ですが、20020421 は以下のように分解することができます。
    20020421 = 2002 × 10000 + 421
 つまり、421 は、20020421 を 10000 で割った余りで求められます。次に、421 から月に相当する 4 を取り出す操作ですが、これは小数点の移動、小数部の切捨てで得られます。
    421 ÷ 100 = 4.21
 4.21 から小数点以下を切り捨てると、整数部の 4 だけが残ります。

 よって、最初に 年月日の値を 10000 で割った余りを求め、次にそれを 100で割った整数部を計算するので、( D % 10000 )/ 100 のイが正解となります。
※ 解説の内容は執筆時点のものであり,含まれている情報の正確性,妥当性について保証するものではありません。ご注意ください・・・

関連する(かもしれない)問題