情報・アルゴリズムのテーマ一覧へ

基礎科目・情報・アルゴリズム

基数変換と補数

よく出る高校

9問H25・H27・H28・H30・R1・R2・R4・R6

10進数と2進数・16進数の行き来(小数を含む)と、2の補数・1の補数の計算が出ます。

よく出る形

  • 10進数の小数(0.6,0.1,0.85 など)を2進数に直す
  • 2進数を上の桁から「2倍して次の桁を足す」流れ図で10進数に直し,途中の値を答える
  • 10進数を2進数・16進数で表す。2進数の「2の補数」「1の補数」を求める
  • 小数の2進化・補数・流れ図・10進から2進・16進への変換が,年ごとに入れ替わる。同じ型どうしは数字だけが替わる

覚えること

  • 2進数の桁の重み:整数部は右から 1,2,4,8,16 …,小数部は 1/2,1/4,1/8,1/16 …
  • 16進数は 0〜9 と A(10)〜F(15) を使う。2進数4桁が16進数1桁,2進数3桁が8進数1桁に対応する
  • 整数を2進数にするには「2で割って余りを下から並べる」,小数は「2を掛けて整数部分を上から並べる」
  • 0.1 や 0.6 は2進数では割り切れず,同じ並びがくり返す循環小数になる
  • k桁の2進数 X の「2の補数」は 2k−X,「1の補数」は (2k−1)−X
  • 1の補数は各桁の0と1を入れかえるだけ。2の補数はそれに1を足したもの
  • 8ビットの2の補数表現:いちばん左のビットが1なら負の数。負の数 −x は 256−x で表し,表せる範囲は −128〜127
  • 2進数から8進数・16進数へは,小数点を基準に「整数部分は右から,小数部分は左から」3桁・4桁ずつ区切る(足りない所は0で埋める)

解き方

  • 小数の変換は,×2 して出た整数部分(0か1)を順に書き,残りの小数でくり返す
  • 例:0.6 → 0.6×2=1.2(1)→ 0.2×2=0.4(0)→ 0.4×2=0.8(0)→ 0.8×2=1.6(1)→ 0.6 に戻るので 0.1001 1001 …
  • 2進数→10進数の流れ図は,最初に s=いちばん上の桁,あとは s←s×2+次の桁 をくり返す
例:(1101)2 は 1 → 1×2+1=3 → 3×2+0=6 → 6×2+1=13
  • 補数の例:(100110)2=38,6桁なので2の補数は 64−38=26=(011010)2,1の補数は 63−38=25=(011001)2
  • 補数から元の数へは,そのまま10進数にした値 N を使って x=256−N(8ビットの場合)。または0と1を入れかえて1を足す
  • 答えが出たら,桁の重みを足して10進数に戻し,元の数と合うか確かめる

ひっかけ

  • 2の補数と1の補数を入れかえない。2の補数のほうが1大きい
  • 流れ図で「0の桁」は2倍だけにする。0の桁で+1 をしない
  • 1を足し忘れた値(1の補数のまま)や,ビット列をそのまま10進数にした値(214 など)がまぎれている
  • 2進数を8進数にするとき,3桁の区切りは小数点から。左端から区切らない
このテーマの想定問題を解く

想定問題:1・2・3

このテーマの過去問(このサイトに解説がある 5問)

平成に出た同じテーマ(4問)

このサイトにはまだ解説がありません。年度と題だけです。