• 締切済み

2進数、2の補数について

負の表現を2の補数とすると、4ビットで扱うことができる整数の範囲は、10進数で○~○である。 という問題がわかりません。 答えは-8~7とあるんですが・・・。 冬休みに入って先生に聞けないので、どなたか教えて頂ければと思います。 どうぞアドバイスよろしくお願い致します。

  • laieo
  • お礼率79% (205/257)

みんなの回答

  • issa_srv
  • ベストアンサー率44% (40/89)
回答No.4

コンピュータでは0と1で全ての数字を表現します。 文字列の1ビット目をプラス(0)/マイナス(1)として見て下さい。 0XXX(プラス) 1XXX(マイナス) となります。 ◎プラス表現の例 0111 = 7 一桁目が「0」なのでそのまま2進数で7をあらわしています。 ◎マイナス表現の例 1111 = -1 一桁目が「1」なのでマイナスをあらわしています。 そのまま数えると「-7」に見えませんか? ですが、それは違うのです。 一桁目が1の場合は「反転して1を足す」ことが必要です。 1111 0000(1を0に反転) 0001(1を足す) 「-1」を表していることがわかります。 非常に簡単なので、いろいろな数値を試してみてください。

noname#227760
noname#227760
回答No.3

2の補数を使う場合、 一番上のビットは、+または-を表す記号として使用します。 1ならマイナスの値を表現し、0ならプラスの値を表現します。 つまり、実際に数値を表現するためには、残りの3ビットを使います。 2の補数は、その値をプラスで表現した場合の2進の値(以下のA)の 0と1とを入れ替えて(以下のB)、その値に1を加えると出ます(以下のC)   A    B    C -8 1000 → 0111 → 1000 -7 0111 → 1000 → 1001 -6 0110 → 1001 → 1010 -5 0101 → 1010 → 1011 -4 0100 → 1011 → 1100 -3 0011 → 1100 → 1101 -2 0010 → 1101 → 1110 -1 0001 → 1110 → 1111 0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 以上のとおり、マイナスの値は先頭が「1」で プラスの値は先頭が「0」になります。 つまり、2の補数で表現できるのは、 ■マイナス側: 2進数で一番上の桁だけが1で 残りはすべて0の場合に表現できる10進数の「プラス」の数を マイナスにした値 # 今回は「1000」(2進)=「8」(10進) # つまり -8 になる。 ■プラス側: 全ビット数(今回は4ビット)から1を引いた数(今回は3ビット)で 表現できる10進数 # 今回は「0111」(2進数)=「7」(10進) # つまり 7 になる。 ということでご理解いただけたでしょうか? 私も昔、情報処理技術者試験のために勉強しました。 がんばってくださいね。

回答No.2

4ビットでは16個の数値を表現することができる 16個の数値を全て非負の値にすると0から15までが表現できる 16個の数値で正負の値を扱いたい場合は0を境にして±8までだとわかりやすいけど、残念ながら0が真ん中にいるからどうしても±7までしか表現できない。 ところが、±7の範囲だと0を含めて全部で15個の数値表現だから、さらにひとつ欲張って負の数値は-8から正の数値は7までで我慢しようというのが この答えです じゃあ、2の補数ってなんなのさ?ってのが次の話題で 2進数で正負の区別をするときに一番先頭のビットを符号ビットと考えると、左が10進数、右が4ビットの2進数として次の3通りの表現方法が考えられる   0は単純に0000として話を進める 1)先頭ビットを符号ビットにして正負を区別する方法   1は0001  -1は1001    7は0111  -7は1111  2)正の数値のビットを反転したものを負の数とする方法   これは1の補数表現   1は0001  -1は1110    7は0111  -7は1000 3)正の数値のビットを反転してさらに1を加えたものを負の数とする方法 これが2の補数表現   1は0001  -1は1111    7は0111  -7は1001  16通りの数値を10進数と2進数で順に並べて比べてみると法則がわかる思います あとは2の補数などでググって調べてください

  • JAWS55
  • ベストアンサー率38% (176/452)
回答No.1

http://www.pursue.ne.jp/jouhousyo/sysad/sysad010.htm このページを見て考えてください。 4ビットですから表せる整数は16個です。 最上位ビットが0の場合が正ですから、残りの3ビットで表せる最大の整数は?

関連するQ&A

  • 2進数の補数表示について

    よろしくお願いします 「負の数(-128)を8ビットの2の補数表示するとき、どうなるか?」 の問題で、わからない箇所があります。 1.最上位ビットは正・負を表す。 2.負の数:-127を2の補数を使用して表現する。    (例)-1(10)==>    まず、正で考える。      ==> 0000 0001(2)      「確認」 1111 1110(反転)            +1(プラス1) ---------- 1111 1111(2)(答え) -127(10)      ==>0111 1111(2)  まず、正で表す。    「確認」        1000 0000(反転)           +1 (プラス1) ---------- 1000 0001(答え) ここからが疑問なんです。    -128(10)の場合      ==>1000 0000(2) まず、正で考える。    「確認」        0111 1111(反転) +1 (プラス1)       -----------      1000 0000(2)(答え) ↑ ・答えがプラスの128(10)=>10000000(2)と同じではない  でしょうか? ・このときの最上位ビットは桁上がりの「1」と正負の違  いを表す「1」のどちらを表しているのですか? ・たとえば「負数を2の補数で表すとき,8ビットで  表現できる整数の範囲は10進数でどれか。」など  の問題で答えが正の127は理解できるのですが、  負は「-128」ということがよくわかりません。 一応検索をしてみましたが、類似回答では理解できませんでした。よろしくお願いします。        

  • 2の補数表現2進数が表す10進数は?、

    次の2の補数表現の2進数が表す10進数はいくらか? 1111 1111 1111 1111 1111 1111 1111 1111 という問題があるのですが、 これを解くと、まず、上のビット列は2の補数表現なのだから、これはマイナスですよね?そして、次にビット列を2の補数を求めるやり方でやると元の数がわかりますよね(この辺がいまいち解っていない)? という事は全ビットを0にして、最下位ビットに1を 足せばいいから0000 0000 0000 0000 0000 0000 0000 0000 + 1 =0000 0000 0000 0000 0000 0000 0000 0001 となります。10進数だと 1を表すから答えはー1という事になるのでしょうか?お願いします。

  • 補数を利用した引き算について

    こんにちは。 『2進数で 111 - 010 を計算をせよ。』 という問題があります。 つまり10進数でいう所の 7 - 2 = 5 の計算をします。 補数を利用すると引き算が足し算ででき、演算が簡単になることを 本は説明しようとしてるのですが、腑に落ちない点があります。 解説では --------------------------------- 引く数 010 の補数を求めると 101 なので  111 +101 -------- 1101  ↓  101 よって桁上がりを無視した 101 が答え --------------------------------- との事ですが疑問に思うことがいくつかあります。 I. 上記の計算では3ビットであることが前提になっています。 7 - 2 = 5 をしたいわけですから、そうすると  111 ←符号なしの表現 ( 7 ) +101 ←符号付きの表現 ( -2 ) -------- 1101  ↓  101 ←符号なしの表現 ( 5 ) となり、符号なしと符号付きの数値を混ざってしまうが、良いのでしょうか? また、この説明の仕方だと答えが 0~7 になる答えしか出せません。つまり引く数の方が大きいと計算できません。 私は補数を使うのであれば正の値・負の値、全て符号付きの値でなければいけないと思っていたので、 もし私が説明するのであれば全て符号付きにし、そして符号付きで7を表せるようにするために4ビットにして  0111 ←符号付き( 7 ) +1110 ←符号付き( -2 ) ---------- 10101  ↓  0101 ←符号付き( 5 ) とするのであれば納得できます。 答えの範囲も -8~7 と負の値も許容できます。 II. 実際には 本のように引く数だけを補数にして足し算をして答えを求めているのか、 それとも私のように正の値・負の値、ともに符号付きの表現にして足し算をしているのか、 もしくは、いずれとも違うのか、どうなのでしょうか? また、参考文献などがありましたらご紹介お願いします。 以上ですがよろしくお願いします。

  • 1の補数表現

    昔の本を買って情報処理の勉強をしているのですが ふに落ちない事がありまして質問させていただきます。 符号付の整数を8ビットの2進数であらわす時、1の補数表現で最小の数は-128である。 と言う問題がありまして回答が正しいとなっていました。 しかし自分は-127までしか表現できないと思いまして。。。 2の補数表現なら-128~127まで表現できると思うのですが 1の補数表現なら-127~127までしか表現できないと思います。 詳しい方がいましたらよろしくお願いします。

  • 補数ということばの意味

    補数ということばの意味 正確には計算機科学の質問なのですが、カテゴリがないのでここに質問しました。 コンピューターで負の数を表すときに、補数表現を使うことがあります。二進数の負の数を表すときに、"1の補数で表す"というときにはビット反転を行い、"2の補数で表す"というときにはビット反転プラス1を行うということはわかるのですが、"1の補数"や"2の補数"ということばの意味がわかりません。何で、"1の"とか"2の"というのですか?

  • 2の補数について

    情報処理試験(基本情報)用の考え方という前提でお聞きします。 「負数を2の補数形式で表現する2進数の計算で・・・・」という問題がよくあります。 この問題文の中で「10101」などの数(これは5ビットの符号付2進数とします) として記述されているものは、もう2の補数になっていると考えていいのでしょうか? それともこれを、今から2の補数に直すのですか? (もし直すのであれば、最上位ビットの符号が変わるのでしょうか?) 違う言い方をしてみますと「A」の2の補数が「-A」だとしたら、 「-A」の2の補数は「A」になるんでしょうか? それとも「そんな表現はない。-Aの時点ですでに2の補数だ」という ことになるのでしょうか? 解りにくくてすみません。

  • 負の整数を求める

    負の整数を表現する問題で質問です。 4ビットのパターン1101を下記の通りに求め、小さい順に並び変える場合、 1, 1の補数による表現 2, 2の補数による表現 3, 絶対値に符号を付けた表現(先頭ビットが0は整数、1は負数) 1の補数は反転なので、0010とわかりますが、回答にこれは10進数の2だからと書いてありました。そこまではわかります。ただ、そのあとに、10進数の2だから、1101はマイナス2、とありました。なぜここでマイナス2となるのでしょうか? 2の補数の場合は反転した1の補数に1を加算して、0011とわかりました。しかし、またそれはマイナス3となっています。 3の絶対値に限っては先頭ビットは1なので負で、残りの3ビットは101で、10進数の5だから、マイナス5とあります。これに限ってはよくわかりません。 どなたか説明をお願いします。

  • 補数と進数

    補数というものがよくわかりません。 参考書を読んだのですが、いまいち理解できませんでした…。 (0111 1110)※2(小さい2は※2と表記します)の2の補数を求めろ、という問題は、どのようにして解けばよいのでしょうか。 また2進数についてなのですが、2進数を用いて(38+18)を計算せよ、という問題があります。 これは、(3×2の1乗+8×2の0乗)+(1×2の1乗+8×2の0乗) =6+8+2+8=14. …で答えは14??と思ったのですが、答えもないのでわかりません; 全然違っていたら是非解き方を教えてください。

  • 1と2の補数

    10進数整数0、11、13を1の補数に変換 10進数整数0、32、45、を2の補数に変換 という問題がよく分かりません。 分かるかたおしえてください。おねがいします。

  • 2に補数

    10進数から2進数を2の補数にする時はビット反転して1を足すとできますが、2進数から10進数を2の補数にするときも同じくビット反転して1を足すと正解の答えが出るのですが、そのやり方でいいのでしょうか?

専門家に質問してみよう