15/01/16 コンピュータ科学入門 第12回 小テスト ① 負の数を2の補数で表現する場合,8ビットの2進数 「10110100」を10進数で表すといくらか. ② 負の数を2の補数で表現する場合,-49を8ビットの2進 数で表しなさい. ③ nビットの符号なし2進数で表現できる10進数の最大値 と最小値を求めなさい. ④ nビットの符号あり2進数で表現できる10進数の最大値 と最小値を求めなさい.ただし,負の数を2の補数で表現 するものとする. 1 15/01/16 算術左シフト v 先頭ビット(符号ビット)は動かさない v 残りの部分を左にシフトする v あふれたビットは捨て,空いたところには0 を入れる 8ビットのビット列「11101001」を左に2ビット算 術シフトし,シフト前とシフト後の結果がどう変 わったかを確認しよう. 算術右シフト v 先頭ビット(符号ビット)は動かさない v 残りの部分を右にシフトする v あふれたビットは捨て,空いたところには符 号ビット(と同じもの)を入れる 8ビットのビット列「10010010」を右に1ビット算 術シフトし,シフト前とシフト後の結果がどう変 わったかを確認しよう. 2 15/01/16 コンピュータによるかけ算 シフト演算とたし算の合わせ技で実現できる 例えば,5x=4x+x=22x+xなので, 「もとの数xを2ビット左にシフトしたもの(4x)」と 「自分(x)」をたし算すればいい コンピュータによる割り算 v 割り算を引き算で表現してみる a÷b=c aからbをc回引いたら0になる 割り算もシフト演算とたし算で表現できる!! 3 15/01/16 コンピュータによる割り算 11110 ÷ 101 30 ÷ 5 を2進数で計算 11110を超えない範囲でできるだけ101を左シフト 101 → 10100 2ビット左シフト 11110から10100をひく 11110 – 10100 = 1010 コンピュータによる割り算 1010を超えない範囲でできるだけ101を左シフト 101 → 1010 1ビット左シフト 1010から1010をひく 1010 – 1010 = 0 4 15/01/16 コンピュータによる割り算 11110を超えない範囲でできるだけ101を左シフト 101 → 10100 2ビット左シフト もとの数「11110」から「101」の22倍の数 をひいた もとの数「11110」から「101」を22回ひい た → その結果は「1010」 コンピュータによる割り算 1010を超えない範囲でできるだけ101を左シフト 101 → 1010 1ビット左シフト もとの数「1010」から「101」の21倍の数 をひいた もとの数「1010」から「101」を21回ひい た → その結果は「0」 5 15/01/16 コンピュータによる割り算 トータルすると・・・ もとの数「11110」から「101」を22+21回ひいた 22+21 = 6 【演習】 99 ÷ 11を2進数を使って計算しよう. 小テスト ① もとの数を32倍するにはどのようなシフト演算を行 えばよいか. ② 6ビットの2進数「001101」を2ビット論理左シフトし た結果を10進数に直すといくらか. ③ 論理左シフトで1があふれるとどうなるか. ④ 論理右シフトで1があふれるとどうなるか. 6
© Copyright 2024 ExpyDoc