• 締切済み

2の補数について

みなさん教えてください。 今、情報関係の仕事に就き資格を取ろうと思っています。 その資格試験の問題に、下記のような問題が出てきて困っています。 考え方と回答を教えて頂けませんか。 お願いします。 (問題) 「16ビットを2の補数で表したとき、10進数の範囲は?」

みんなの回答

  • ssp2548
  • ベストアンサー率28% (4/14)
回答No.7

2の補数についての詳しい話は各所で既出と思いますので省略しますが、 試験中に10進数の範囲をど忘れしてしまった場合の計算方法だけ述べます。 Nビット長の2の補数表現の範囲は -2^(N-1)から2^(N-1)-1 です。N=16の場合、2^15を計算できればよいですが、例えば、 2^15 = 2^(8+7) = 256*128 のように分解すれば紙と鉛筆があれば計算できます。

noname#231223
noname#231223
回答No.6

No.2です。 とんだ間違いで失礼しました。 最近0~255ばっかり扱ってたクセで、-1を余分にやってしまったようです。

  • jjon-com
  • ベストアンサー率61% (1599/2592)
回答No.5

http://okwave.jp/qa/q4175997.html の私の回答No.2 を参照していただければ,16ビット長の2の補数における 最大値は 0111111111111111 という正の数で 最小値は 1000000000000000 という負の数であることが分かります。 これを10進数に変換して,回答No.4が正解。 > 0111 1111 1111 1111 (B) > 10進数で「32766」です。 > > 「1000 0000 0000 0000 (B)」となります。 > 10進数で「32767」ですね。(回答No.2) 惜しかったですね。 前者は末尾bitが1なので奇数,後者は末尾bitが0なので偶数です。

  • samtomsan
  • ベストアンサー率55% (1060/1897)
回答No.4

「0111 1111 1111 1111」は10進数で「32767」です。 従って、-32768 から 32767 の範囲になります。 「2の補数」で検索すればすぐにいろいろな情報が見つかりますが、「2の補数」の定義をしっかり把握してみて下さい。そうすれば簡単に回答が判ります。

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

#2には計算間違いがあるので、質問者さん御自身で計算しなおしてください その計算ができないと、資格を取れても、実務では厳しいと思います。

noname#231223
noname#231223
回答No.2

16ビットですから、2進数16桁ですね。 見やすくするため、4ケタ区切りにしておきます。スペースに意味はありません。 「2の補数で表したとき」とありますから、負の数を扱う(マイナスを2の補数で表す)わけです。 先頭ビットが0のときは「正の数」またはゼロ、1のときは「負の数」を表すことになります。 そうなると、 ・正の数の最大値は、先頭ビットがゼロ、残りのビットがすべて1のときです。 0111 1111 1111 1111 (B) 10進数で「32766」です。 ・負の数の最小値(絶対値が最大)は、先頭ビットが1、残りのビットがすべて0のときです。 1000 0000 0000 0000 (B) この絶対値は、2の補数をとって(0と1を反転し、1を足す)やると求められます。 結果は「1000 0000 0000 0000 (B)」となります。10進数で「32767」ですね。 つまり答えは、-32767~32766となります。 負の数をあらわすのに使う「2の補数」がわからないなら、教科書や参考書をよく読んでください。 2の補数表現はそのまま足し算できて便利な半面、負の数を見てもすぐ数値をイメージしづらい面はありますね。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

「2の補数」について何をどこまで調べた?

関連するQ&A