情報技術(IT)は我々の社会の隅々まで深く浸透し、どのようなビジネスにおいてもITなくして成立しないと言われている。そして、企業は「英語力」と共に、「IT力」を持った人材を求めている。これまで、本ブログでは、英語(TOEICL&Rテスト)のほか、コンピュータプログラミングを扱ってきた。そして、今後はコンピュータプログラミングをさらに理解するために不可欠な情報技術の知識についても取り上げていく。今回のテーマは、「2の補数」である。
コンピュータは0と1だけで情報を表す
4ビットでは24 = 16通りの組み合わせがある。これで、16種類の符号を表すことができるのだ。この符号を0以上の2進数に対応させてみよう。すると、
0000~1111を表すことができる。
しかし、これでは負数を表すことはできない。どのように負数を表すかはコンピュータの設計者が決める。かつては、1の補数を用いて負数を表していた。
なお、補数(ほすう)とは、与えられた数をある決められた数から引いて得られる数のことである。
例えば、10進数の「10の補数」の場合、お互いに足したら桁が上がる最小の数は10のべき乗である。元の数が1桁であれば10の1乗、101 =10が「元の数」と「補数」を合計した数になる。
「7」の補数は、「3」(101 =10)
一方、「9の補数」の場合、お互いに足しても桁が上がらない数の最大値は、10のべき乗から1を引いた値になる。元の数が1桁であれば101-1=9が「元の数」と「補数」を合計した数になる。
「7」の補数は、「2」(101 ー1=9)
この考え方をnビットの2進数の補数に当てはめてみよう。
nビットの2進数の補数
現在の多くのコンピュータは2の補数を用いて負数を表している。この補数を使うことによる最も大きなメリットは、「マイナス記号を使わずに負数を表現することができる」という点である。
例えば、4ビットの2進数なら、10000から正数を引いたものが負数を表している。
一番左が符号ビット
さて、負数を2の補数で表すと、表現できる値の範囲が変わる。一番左が符号を表す符号ビットとなり、1のときに負数を表すことになる。
nビットで表現できる値の範囲
nビットで表現できる正整数の範囲
0~2nー1
(例)4ビット 0~15
負数を2の補数で表すとき、nビットで表現できる整数の範囲
符号ビット 0:ゼロか正、1:負
ー2n-1 ~ +2n-1 ー1
(例)4ビット ー8~+7
いかがであろうか。あくまでも便宜的な考え方である。しかし、この考え方こそが情報技術の基礎になっている。
(参考)うかる! 基本情報技術者 [午前編] 福嶋 宏訓 (著) 日本経済新聞出版
コメント