こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

2進数について

16進数のEOOOと1000を16ビットの符号付きと符号なしの2進数で計算するとき
E000を符号なしでの2進数にすると(1110 0000 0000 0000)になり
符号付きにすると(0010 0000 0000 0000)になります。
これを10進数に直すと先頭の00を考えないとき-8192になり
00を考えた場合8192になるのでこれはどっちがあっているのか
と思って質問しまた。

また1000を2進数にすると
符号なしでは(0001 0000 0000 0000)になり
符号付きでは(1111 0000 0000 0000)になるというやり方でいいのですか?
それとも000は考えないで(1 0000 0000 0000)で計算したほうがいいのでしょうか?

わかるかた教えてください
お願いします。

投稿日時 - 2009-05-27 22:31:52

QNo.4995827

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

>符号付きにすると(0010 0000 0000 0000)になります。

これは符号付きにしたのではなく符号を反転して、いわば絶対値を
求める計算をしています。

符号の有無で2進表記の数値が変化することはありません。
どちらも
 16'(E000)=2'(1110 0000 0000 0000)
となります。

符号付きの場合は2の補数で表現されていますので10'(-8192)
符号無しの場合は10'(57344)を表していることになります。

符号付き数値(2の補数)として考える場合、最上位ビットが
符合を表していることになりますので、16'(1000)の場合は
10進数表記しても符号付き、符号無しの場合、いずれも同じ
数値になります。

ご参考まで。

投稿日時 - 2009-05-27 23:01:01

補足

2'(1110 0000 0000 0000)を2の補数表現にしたものを10進数にすればいいということですか?

つまりは、16'(1000)は符号付きも符号なしでも10'(4096)ということですね!
わかりやすい説明ありがとうございます。

投稿日時 - 2009-05-27 23:15:12

あなたにオススメの質問