• ベストアンサー

8ビットの2進数

8ビットの2進数で表せる数の範囲は、負の数も含めると、 -2`(8-1)~(2`(8-1))-1 ですが、     ↑     ↑↑ この3つの-1はどのような意味があるのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • pringlez
  • ベストアンサー率36% (598/1630)
回答No.1

8ビットであらわせるのは2^8の256種類。 正の整数だけなら0~255になります。 これを式で表すと0~(2^8)-1 負の数を含めるなら、128を引いて 「0~255」→「-128~127」とします。 これを式にすると「-1*(2^7)~(2^7)-1」となり 8ビットである事を意識するなら 「-1*(2^(8-1))~(2^(8-1))-1」とも書けるでしょう。

pinks420
質問者

お礼

回答ありがとうございます。

その他の回答 (2)

回答No.3

-2^(8-1)と2^(8-1)の-1の意味ですが、これは、8bit目が符号となるため、 数字としては、7bit分しか表せないため、-1します。 (2`(8-1))-1の全体に-1をするのは、    0000 0000=0    0000 0001=1   1111 1111=-1    0000 0010=2   1111 1110=-2 で正負を表します。 でも、ここで2^(8-1)を計算すると1111 1111が正の数になってしまいますので、正の数に含めないために、正の数は全体を-1します。

pinks420
質問者

お礼

回答ありがとうございます。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

負の表現方法には、いろんなものがあります。 http://ja.wikipedia.org/wiki/%E7%AC%A6%E5%8F%B7%E4%BB%98%E6%95%B0%E5%80%A4%E8%A1%A8%E7%8F%BE 8ビットで表現できる値は、2^8=256通りです。 一つを「0」と決めれば、2^8-1=255通りになります。 この255を、正負に等しく分けようとすると、(2^8-1)/2=2^7あまり1 となります 2^(8-1)は、正負に振り分けて半分になるので、 2^(8-1) = 2^8 / 2 の意味です。 あとは、この「余り1」をどうするか、です。 上にある「1の補数表現」等では、「-0」という「負の0」として使います。 この利点は、正負が同数になること。欠点は、-0という使い道の難しい値があるということ。 「2の補数表現」では、-2^7として使います。 利点は、2^8通り全てが違う値になること、欠点は、正負が不均等になることです。-128は表現できるけど、+128が表現できません。 -128にするのは「最上位ビットが1なら負の数」というルールが適用できるからです。 エクセス127では、逆に+128にしています。 この方法については、Nを自由に都合良く決められるので、-15~240などといった表現も可能です。

pinks420
質問者

お礼

回答ありがとうございます。

関連するQ&A

専門家に質問してみよう