2進数 , 補数とは



デジタル信号処理

公開日:2018/10/7 , 最終更新日:2019/7/3        

前提知識


2進数とは数値を0と1で表す手法の事で、コンピュータの中では全て2進数で扱っています。これは電気が流れた状態を1、電気が流れない状態を0として計算するためです。 10進数と比較すると以下となります。



例えば10と書いた時に、それが10進数と2進数どちらの10なのか誤解しない様、以下の様に数字の右下に進数表記をする場合があります。 また2進数をバイナリー(binary)といい、10進数をデシマル(decimal)といいます。


また2進数は桁数をbitで表現し、コンピュータでの演算能力の大きさを示すときに、64bitや32bitマイコン等とbit数で表現する場合があります。 この場合は64bit(32bit)の情報を一度に演算できる能力があることを意味しております。なお8bitで1byteとなります。


■2進数⇔10進数の変換方法
<整数>
2進数を10進数にする時は以下のとおり。数値*2の(bit数-1)乗の和となります。



10進数を2進数にする時は以下のとおり。2で割って余りを並べていきます。


2進数の足し算、掛け算は以下の様に行います。10進数との違いは1より大きくなったら繰り上げます。


<小数点>
以下の様に小数点が入った数字を2進数で表現します。小数点以上は先ほど説明したとおりなのですが、小数点以下は数値*マイナス乗の和となります。


10進数を2進数に変換するには以下のとおり、例として0.4を2進数に変換します。小数部分に2をかけその整数部を順番に並べていき、小数部が0になるまで繰り返します。 ただし小数部がぴったり0になる事はあまりなく、循環小数になってしまう事が多いです。

<負の数>
負値の表現は少し難しいです。


補数という言葉が出てきますが、何故このような表現なのか、先ず補数とは何か説明します。

補数とは
足し算の答えが一定になる二つの数字があるとき、片方の数字に対するもう片方の数字を補数といいます。10進数の場合、例えば以下となります。


これで例えば15-6を補数を使って表現する場合、6の補数を足し、繰り上がり数の10を引く場合と等しくなります。


これの何が便利かというと、2進数を扱うコンピュータにとっては6を引くより10を引いた方が簡単だからです。 何故なら繰り上がりの桁の数字を無視するという考えにすれば、足し算だけで引き算を実現できるからです。



2進数の場合の補数は以下の様に、片方の数字の0と1を逆にし、更に1を足した形となります。


ただし2進数で負値(補数)を表現するにはルールがあり、8bit単位で表現する必要があります。従って以下となり、(1)の定義の通りとなりました。


補数を使って2進数の減算をする場合、10進数の時と考えは同じで、補数を足して繰り上がりの数を引き(無視し)ます。


負値(補数)は8bit単位で表現する必要がありますので、(2)式を改めて表現しなおすと以下となります。


負の数は8bit単位で表現について
先述したとおり、負の数は8bit単位で表現する必要があります。何故なら先頭の桁で負の数か正の数かを表現しているからです(1が負)。 ただし、先頭が1であっても負を扱わないの表記の場合は値が異なるので注意が必要で、この数が負を扱っているのか否かを明示する必要があります。











サブチャンネルあります。⇒ 何かのお役に立てればと

関連記事一覧



デジタル信号処理