2の補数

(2016/08/15)
  • 2進数で負数を表すためのもの

  • けた内の最大数+1を基準値とする
  • 1の補数は桁内の最大値を基準値とする
  • 0から1を引く

  • 8bitの2進数で表すと00000000 - 00000001 = -00000001としたい
  • が、2進数で負の記号はつけられない
  • 2の補数では最上位ビットの上の桁に1があると仮定し、計算する
  • 100000000 - 000000001 = 11111111
  • 111111111を足すと0になる
  • この9bitの100000000の最上位ビットを無視すれば0となる
  • 要するに?

  • 最大桁数 + 1のbit数を必要とする
  • 最上位bitが1なら負、0なら正の数となる
  • 表現できる範囲はN bitの場合、-2^(n-1) ~ 2^(n-1) - 1となる
  • 負の値の場合は最上位bit数が1、それ以下が0の表現する値を最大上位bit数以下の値から引く
  • 1111 -> 111 - 1000 -> (10進数に変換) -> 7 - 8 -> -1
  • 応用情報技術者試験

general(396)