直線上に配置


補数表現
  • 1の補数と2の補数

    コンピュータではマイナスの値を2の補数を使って表します
    補数を使えば減算を加算で行うことができます
    (※ちょっと混乱しそうですが、本当に出来てしまいます)

    ・補数
    基準値からその値を引いたもので、基数に対し2種類ある
    ※基準値:同じ桁の最大値

    n進数の場合
    n-1の補数 基準値-その値
    nの補数 n-1の補数+1

    補数の例
    2進数 1と2の補数
    10進数 9と10の補数

    ・1の補数

    2進数「1011」の1の補数

    最大値 - その値 = 1の補数
    1111 - 1011 = 0100

    ※2進数ではビット反転でも良い
    1011

    0100

    ・2の補数

    2進数「1011」の2の補数

    最大値 - その値 + 1 = 2の補数
    1111 - 1011 + 1 = 0101

    ※2進数ではビット反転+1でも良い
    1011

    0100

    0101

  • 負数の表現

    符号を使わずにマイナス値を表現する
    表現可能な範囲を2つに分ける
    (プラス領域とマイナス領域)

    例:4桁の2進数
    0000から1111
    0000から0111 1000から1111
    プラス マイナス

    ある正の値の「2の補数」をその値の負数とする
    (※マイナス値を2の補数で表現)

    プラスの値 マイナスの値









    0001 1111







    10進で「1」 10進で「-1」
    0111 1001
    10進で「7」 10進で「-7」

  • 10進の負数->2進の負数

    <変換手順>
    1. 「10進の負数」->10進の正数
    2. 10進の正数->2進の正数
    3. 2進の正数->「2進の負数」

      10進
      -30
      30
      2進 00011110
      11100010

  • 減算を加算で行う

    例:10進の「5-2=3」

    10進の5は2進で「0101」
    10進の2は2進で「0010」
    10進の-2は2進で「1110」


    0101
    1110
    10011

    4桁のみ有効とすると、5桁目の1が消えて
    「0011」

    2進の「0011」は10進で「3」

    ※減算を加算で行えたことになる

  • シフト演算

    ビット列を左右に移動
    (※桁数からもれたものは削除される)
    乗除算が行える
    (※1ビットシフトすると2倍または2分の1になる)

    ・シフト演算の種類
    1. 論理シフト
      移動時に空いたビットを0にする
    2. 算術シフト
      左シフト時は空いたビットを0にする
      右シフト時ははいたビットを最上位桁と同じにする
      (※符号値にする)

    算術シフトの例
    右へ1ビットシフト
    10進「-2」 10進「-1」 2分の1
    110 111
    左へ1ビットシフト
    10進「-2」 10進の「-4」 2倍
    110 100
    (※論理シフトで右シフトの場合は若干異なる)


授業資料メニュー

お問合せフォーム

トップ アイコン
トップページへもどる


直線上に配置