5月10日(水)3コマ目

今日、やったこと

  • [解説]負数を含む基数変換(2進数<=>10進数)
  • [確認テスト]浮動小数点形式の基数変換
  • ビットシフト

今日のホワイトボード

[解説]負数を含む基数変換

連休前にやった確認テストの解説をしました。

2の補数から1の補数への計算(2進数の引き算)を間違っている方がちょこちょこおられました。

問1 10進数を2進数へ(負数は絶対値の2進数で表す)

① 10進数-3を4ビットの2進数へ(負数は絶対値の2の補数で表す)

図 問1の①


② 10進数-1を4ビットの2進数へ(負数は絶対値の2の補数で表す)

図 問1の②

③10進数-14を8ビットの2進数へ(負数は絶対値の2の補数で表す)
図 問1の③

問2 2進数(負数は絶対値の2の補数になっている)を10進数へ

①2進数1111 0100(負数は絶対値の2の補数になっている)を10進数へ
1の補数にする際の引き算に注意!!

2進数の引き算(繰り下がりあり)
 ① ② ③
 1 0 0
 ー   1

③のケタの引き算はできないので、上のケタ(②)から借りてきます。
が、②のケタも0なので、さらに上のケタ(①)から借りてきます。
①のケタから2を1つ下のケタ(②)に貸します。その結果、①のケタの数は1(①のケタの数)-1(②に2を1個貸す)=0になります。
②のケタには①のケタから2を借りてきました。が、さらに下のケタ(③)に2を1つ貸すため、②のケタの数は2(①から借りてきた)-1(③に2を1個貸す)=1になります。
③のケタには②のケタから2を借りてきました。③のケタの計算結果は2(②から借りてきた)-1(③のケタの引く数)=1が③のケタの計算結果になります。
②のケタの計算結果は1(③に貸したあとの②のケタの数)-0(②のケタの引く数)=1です。
①のケタの計算結果は0(②に貸したあとの①のケタの数)-0(①のケタの引く数)=0です。

よって、計算結果は011になります。

図 問2の①


すいませんが、ひっかけ問題です。
”8ビットの2進数”ですが、②の2進数は7ビットです。ということは8ビット目(最上位ビット)は0になります。よって、これは正の数になるため、単純に10進数にしてください。

③2進数1000 0000(負数は絶対値の2の補数になっている)を10進数へ
これも1の補数にする際の引き算に注意!!
図 問2の②

④2進数1110 0000(負数は絶対値の2の補数になっている)を10進数へ
これも1の補数にする際の引き算に注意!!
図 問2の④

ビットシフト

ビット列を左右にずらすこと。
ただし、右シフト(ビット列を右へずらす)の場合、空いた上位ビットに何を入れるかが2種類あるので注意!!

左シフト

ビット列を左方向へずらす。
空いた下位ビットには0を入れる。
図 左シフト

右シフト

ビット列を右方向へずらす。
空いた上位ビットには
ビット列は符号つき?符号なし?空白ビットに入れる値
符号なし 0を入れる
符号あり 符号ビット(最上位ビット)と同じ値を入れる
のように2種類あるので注意!!
図 右シフト

次回は

テストはしません。
ビットシフトの続きをやります。


このブログの人気の投稿

6月7日(水)1コマ目

5月24日(水)1コマ目

5月31日(水)1コマ目