電験三種 R6年度上期 機械 問18 問題と解説

 問 題     

数の表現法について、次の(a)及び(b)の問に答えよ。

(a) 10進法で表される正の整数Nは、10進法の2以上の整数rを用いて、次式のように表すことができる。

N=anrn+an-1rn-1+…+a1r+a0

ただし、aiは整数であり、0≦ai<r(i=0,1,…,n)である。

このとき、Nをr進法で次のように表現することとする。

(anan-1…a2a1a0)r

この表現方法によって次の計算が成り立つとき、rの値として、正しいものを次の(1)~(5)のうちから一つ選べ。

(122)r-(42)r=(40)r

  1. 5
  2. 6
  3. 7
  4. 8
  5. 9

(b) 8ビットの固定長で、正負のある2進法の数値を表現する場合、次のような①及び②で示す方式がある。また、D-Aコンバータにおいては次の③で示す方式が用いられる。

① 最上位ビット(左端のビット、以下MSBという)を符号ビットとして、残りのビットでその数の絶対値を表す方式は、絶対値表示方式と呼ばれる。

この場合、MSB=0が正(+)、MSB=1が負(-)と約束すると、10進数の-8は( ア )となる。

② 7ビット長で表された正の数nに対して、-nを8ビット長のnの2の補数で表す方式がある。この方式による場合、10進数の-8は( イ )となる。

この方式においても、MSB=1は負の整数、MSB=0は正の整数を示すことになる。この方式は、2進数の減算に適している。

③ D-Aコンバータでは、ディジタル入力量とアナログ出力量が比例の関係にある。

8ビットのD-Aコンバータではディジタル入力量として、(1000 0000)2を与えた場合に、0.0000Vが出力されるようにしたオフセット・バイナリ・コードを用いることが多い。

この場合、出力電圧が正のときは、MSB=1となり、負のときは、MSB=0となる。

ディジタル入力値が(0000 0000)2のときのアナログ出力値が-5.0000Vであるオフセット・バイナリ・コードのD-Aコンバータでは、ディジタル入力値が(0111 1000)2のときの出力電圧値は( ウ )Vとなる。

上記の記述中の空白箇所(ア)~(ウ)に当てはまる組合せとして、正しいものを次の(1)~(5)のうちから一つ選べ。

  •   (ア)       (イ)      (ウ)
  1. (1000 1000)2  (1000 0111)2  -0.2734
  2. (1111 1000)2  (1000 1000)2  -0.3125
  3. (1111 1000)2  (1000 0111)2  -0.3125
  4. (1000 1000)2  (1111 1000)2  -0.3125
  5. (1000 1000)2  (1111 1000)2  -0.2734

 

 

 

 

 

正解 (a)-(2), (b)-(4)

 解 説 (a)   

問題文ではr進法での表現が次の(1)式、(2)式のように与えられています。そして、本問はこの条件のもとで(3)式が成立するrの値を求めるというものです。

ここで、(3)式の各項の値を(1)式、(2)式を使って10進数に直すと、以下の(4)~(6)式のように表すことができます。

よって、(4)~(6)式を(3)式に代入してrについて解くと、次の(7)式のようにrを算出できます。

最後に、問題文より「2以上の整数r」とあることから、(7)式の結果のうち正しいのはr=6であると判断することができます。

以上から、正解は(2)となります。

 解 説 (b)   

①の絶対値表示方式では、問題文にも記載がある通り、最上位ビット(左端のビット、MSB)を符号ビットとして、残り7ビットで絶対値を表します。

今回は10進数の「-8」を2進法にしたいのですが、「MSB=0が正(+)、MSB=1が負(-)」とのことなので、まずMSB=1です。そして、残りの7ビットで絶対値8を表すと「(8)10=(000 1000)2」となります。よって、これらを合わせると「(-8)10=(1000 1000)2」となります。

よって、( ア )には「(1000 1000)2」が入ります。

②の2の補数で表す方式では、負の数値を次の3ステップによって2進法で表現します。

  1. ある数(負の数)の絶対値(正の数)を2進数で表します
  2. 2の補数を求めるため、各ビットを反転します
  3. そこに1を加えたものが、表現したい負の数値です

今回の場合、10進数の-8を2進数にしたいので、まずは+8を8ビットの2進数で表します。次に各ビットを反転させ、最後に+1します。すると、次のように表すことができます。

  1. (8)10=(0000 1000)2
  2. (1111 0111)2
  3. (-8)10=(1111 1000)2

よって、( イ )には「(1111 1000)2」が入ります。

③の8ビットD-Aコンバータについて、オフセット・バイナリ・コードでは、次の2つが成り立つように設定されています。これは知識として知らなくても、問題文から読み取ることができます。

  • 入力「(1000 0000)2」(10進数でいう128)が0.0000[V]に対応
  • 入力「(0000 0000)2」(10進数でいう0)が-5.0000[V]に対応

つまり、電圧の変化量5[V]を128段階に分けて表現できるということです。1段階の電圧は大きさは、5÷128=0.0390625[V]に相当します。

ここで、今回はディジタル入力値が「(0111 1000)2」なので、これを10進数で表すと次のようになります。

そして上記の通り、入力「(0000 0000)2=(0)10が-5.0000[V]に対応し、数字が上がっていくたびに0.0390625[V]ずつ増え、最終的に「(1000 0000)2=(128)10」で0.0000[V]となります。

今回は入力値が「(0111 1000)2(120)10なので、出力電圧値は次のように計算できます。

よって、( ウ )には「-0.3125」が入ります。

以上から、

  • ア:(1000 1000)2
  • イ:(1111 1000)2
  • ウ:-0.3125

となるので、正解は(4)です。

コメント