• 締切済み

ビット数と表現できる数の範囲の関係

基本情報技術者の勉強を独学でしています。 nビットを用いると、符号なし整数なら0~2^n-1の範囲、符号付整数なら2^(n-1)~2^(n-1)-1の範囲の値を表す事ができると参考書にありました。 ここで気になったのですが、もしn=2の場合、符号付き整数は-2~1の範囲にある4(2^2)個が表現できる事になりますよね? 00が0、01が1、11が-1までは納得がいくのですが 10を-2として扱って良いのかわからなくなってしまいました。 これはどのように考えれば良いのでしょうか?

noname#133871
noname#133871

みんなの回答

  • P0O9I
  • ベストアンサー率32% (693/2146)
回答No.3

00が0、01が1、11が-1、10が-2 それが2の補数表示です。 10+01=11 は-2+1=-1 を表します。

  • Cupper-2
  • ベストアンサー率29% (1342/4565)
回答No.2

符号付きなら先頭のビット(MSB)は符号扱いですから… プラス方向に数字を積算して MSB まで桁が溢れた場合は、遠慮無くマイナス表示でOK。

  • Cupper-2
  • ベストアンサー率29% (1342/4565)
回答No.1

符号付きなら先頭のビット(MSB)は符号扱いですから…。

関連するQ&A

  • 8ビットを2進数で表現すると…

    質問です。 符号付の整数を8ビットの2進数で表現するとき、00110111-11000001の演算結果はどのようになるのでしょうか? 符号ビットは左端にあり、負数は2の補数で表します。

  • プログラミングにビットについて

    独学でプログラミングを勉強しているものですが、ビットについてまだ完全に理解できていません。 ビットというのは、メモリだとか、容量だとかという大雑把なことは分かっているのですが 詳しく完全に理解できてるわけではありません。 そこで 今日変数の復習をしていた所 教本の説明の欄の ○○(数字)ビット符号付き整数 みたいなものに疑問をもちまして 例えばintなら32ビット符号付き整数というような説明の形なのですが この場合のintの説明の解釈というのは 二進数で0一つで1ビットを占めているとして 32ビット符号付き整数というのは 二進数で言う+(-)0x31の数値を表現することができ、 なので この場合、+(-)を1ビット占めているので表現できる数字は10進数で言う+(-)2^31-1が限界ということでいいのでしょうか?

  • 9ビットの2進数を符号付整数…

    問題の意味がわからないのですが、どう解けばいいですか? 9ビットの2進数を符号付の整数とみなしたときの数値の範囲を、10進数で下限~上限の形で示せ。符号は2の補数。

  • javaのbyte型の整数範囲の考え方

    javaのbyte型に格納できる10進数の整数範囲の考え方についてです。 コンピュータ内部で-128がどのように表現されているのかが よく分からないので質問させてください。 byte型(8bit)は-128~127の整数範囲、とあります。 □□□□□□□□(8bit)あって 00000000~01111111が(整数0~+127)を表現。 1番左のビットは符号を表すためのビット(+なら0 -なら1) でよろしいのでしょうか? となると-1は マイナス→10000001(1番左のビットは1でマイナスを表す)でいいのでしょうか? もしこれだと、-128の場合そもそもビットが8個しかないので 11111111だと一番左のビットが1でマイナスを表すとして 残りの7ビット1111111で127を表現しているような気がして、 11111111(8bit)は-127では?と思うんです。 こういうのが詳しく書いてあるサイトなどはないでしょうか? ここでご指導頂ければありがたいです。

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

    こんにちは。 『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. 実際には 本のように引く数だけを補数にして足し算をして答えを求めているのか、 それとも私のように正の値・負の値、ともに符号付きの表現にして足し算をしているのか、 もしくは、いずれとも違うのか、どうなのでしょうか? また、参考文献などがありましたらご紹介お願いします。 以上ですがよろしくお願いします。

  • 浮動小数点表現

    2^{24}を32bit整数表現及び32bit(単精度)浮動小数点表現で表せ。 結果は16進数で示せ。 符号ビット:MSB 指数部n:7ビット 仮数部:24ビット という問題があるのですが、 解いてみたものの、答えもないのであっているのか分かりません。 以下の答えで合っているでしょうか? また、合っていなかったら、どのように解くのか教えていただけませんか? 整数表現 0100 0000H 浮動小数点 0100 1000 0100 0000 0000 0000 0000 0000

  • 補数表現で表現できる数値の範囲

    8ビット固定小数点(補数表現)で表現できる数値の範囲を 求める問題があります。 この場合の補数表現は2の補数且つ符号付絶対値表現なのでしょうか? また、この問題の解説をお願いします。

  • 1の補数表現

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

  • 2進数の数え方

    基本情報処理技術者の参考書で 11100100が-28となっていました。 先頭の符号ビットは理解できるのですが、 1×128(2の7乗)1×64(2の6乗)+1×32(2の5乗)+1×4(2の2乗)で-228になる気がするのですが、どう間違っているのでしょうか? 教えてください。よろしくお願いします。

  • 10進数(+-)→2進数への変換(2)

    先ほど、ご質問させて頂きました者です、詳細にご説明させて頂きます (1)10進数:-16072 → 2進数:1100 0001 0011 1000 補足:2進数の16bit目の「1」は符号ビット「ー」 (2)10進数:+16072 → 2進数:0011 1110 1100 1000 補足:2進数の16bit目の「0」は符号ビット「+」 補足:10進数の値の範囲は    2進数で 符号1bitを含む16bitの値の範囲です と変換できるVB関数をご教示ください 宜しくお願いいたします

専門家に質問してみよう