プロが教えるわが家の防犯対策術!

次の6ビット2の補数表現符号付き整数を10進数に直しなさい
(1)(111111)2
(2)(100000)2
(3)(000000)2
(4)(011111)2
(5)(100001)2

わからないので教えてください

A 回答 (5件)

符号がプラスのものは、そのまま10進変換して終わり。


符号がマイナスのものは、2の補数を1の補数に変換してから10進変換する。
    • good
    • 0
この回答へのお礼

言われたやり方で解いたら
(1)62
(2)31
(3)0
(4)31
(5)32
になったのですがあっていますか

お礼日時:2019/12/23 22:26

どこがわからない? なにに困っている?

    • good
    • 0

2進数の「負数」の表し方を全く理解していないみたいですね。



以下では「進数」の表記を後ろに「カッコ」で書きます。

(1) (111111)2
 ↓
111111(2) は一番左の「符号ビット」が「1」なので負数。
 111111(2) → 000000(2) (符号反転=1の補数) → 000001(2) :1を加えて「2の補数」にする
 000001(2) = 1(10)
これが「元の数の符号を反転させた正数」つまり「元の負数の絶対値」なので
 111111(2) = -1(10)

(検算)元の数「111111(2)」に「00001(2)」を加える。
  111111
 + 000001
-----------------
  1 000000  
7ビット目はオーバーフローして消えるので「6ビット」の範囲で考えれば
 111111(2) + 000001(2) = 000000(2)
となる。「足して 0」になるのだから、負数「111111(2)」の「符号を反転させた正数」は「00001(2)」である。

あとは同様に。

(2) (100000)2
これも負数。
 100000(2) → 011111(2) (符号反転=1の補数) → 100000(2) :1を加えて「2の補数」にする
「符号を反転させた正数」と等しいので
 100000(2) = 000000(2) = 0(10)

(3) (000000)2
これは「正」なので、そのまま
 000000(2) = 0(10)

(4) (011111)2
これも「正」なので、そのまま
 011111(2) = (2^4 + 2^3 + 2^2 + 2^1 + 2^0)(10) = (16 + 8 + 4 + 2 + 1)(10) = 31(10)

(5) (100001)2
これは負数。
 100001(2) → 011110(2) (符号反転=1の補数) → 011111(2) :1を加えて「2の補数」にする
 011111(2) = 31(10)
これが「元の数の符号を反転させた正数」つまり「元の負数の絶対値」なので
 100001(2) = -31(10)
    • good
    • 0

>になったのですがあっていますか


(3)(4)が合っていて、
(1)(2)(5)が違っています。
二進数は解っているけれど、
2の補数表現が解らないんですね。

nビット2の補数表現符号付き整数が表す数は、
普通にnビットの符号なし二進数として十進数に変換した後、
2^n で割った余りがその数と同じになるような
-2^(n-1) から 2^(n-1) + 1 までの数を選べばよいです。
(nビット2の補数表現符号付き整数の計算は
mod 2^n の計算だ! と言えばヒトコトですが...
mod に関する知識が要りますね。)

符号なし二進数として読むと、十進数で
(1) 63
(2) 32
(3) 0
(4) 31
(5) 33
なので、
nビット2の補数表現符号付き二進数として読めば
(1) -1   63 = 64×1 - 1 だから
(2) -32   32 = 64×1 - 32 だから
(3) 0
(4) 31
(5) -31   33 = 64×1 - 31
です。

HowTo としては、
「一番左のビットが 1 になっている数は負数だから、
最後に 2^n を引く」ってだけでもいいですけど。
    • good
    • 0

No.3 です。

(2) が間違っていましたね。

(2) (100000)2
これも負数。
 100000(2) → 011111(2) (符号反転=1の補数) → 100000(2) :1を加えて「2の補数」にする
「符号を反転させた正数」が負数表示ではない
 100000(2) = 32(10)
なので、補数表現符号付き表示では
 100000(2) = -32(10)

が正しいです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!