製作・改造なんでもやっちゃう広くて浅い活動日誌

2017/081234567891011121314151617181920212223242526272829302017/10

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
2進数で数字を扱うにあたって、正負を表すのに2の補数という表現方法があります。
例えば2進数4bitで7を表すと0111ですが、同様に-7は1001と表せ、これらを足し合わせたら0000(最上位の繰り上がりは無視)、つまり0になるという方法で、いろんな所で使われている方法です。

より詳しくは、Wikipedia等で調べる方がわかりやすいので、詳しい説明は割愛します。
2の補数 - Wikipedia


ここで話したいことは、例えばLTC1407のように、14bit 2の補数表示で結果が出力されるADCを16回加算して平均をだそうとしたらどうすればいいの?みたいな話です。

話を簡単にするために、4bitのADCということにしてみます。
4bitを16回加算するということは、最大で8bitの桁が必要ですね。
(最大で 11112 * 11112 = 111111112)

しかし、8bit用意したからといって、4bitの値をそのまま足していけるかというと、正の数では問題ないですが、2の補数で負の値を扱う場合は最終的なビット数に移してから計算しなくてはなりません。

解説のため、以下に2~6bitの2の補数をまとめてみました。(クリックで大きくなります)
2の補数一覧


上の画像を見ると、負の一例として-3は3bitでは101、4bitでは1101、5bitでは11101、6bitでは111101となっていることがわかります。
10進数では同じ値であっても、使うビット数によって2進数での表し方が変わってきます。
一方で、正の数の場合5は4bitでは0101、5bitでは00101、6bitでは000101といった具合です。

つまり、ビット数を増やすには、元の値の最上位ビットを計算に用いたいビット数の差分だけ上位ビットに加えれば良いことがわかります。

以上の処理をした後に加算していけば、問題なく計算できます。
関連記事
コメント
この記事へのコメント
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://creatornote.blog87.fc2.com/tb.php/48-dea7fc47
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。