質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.99%

【基本情報技術者試験】nビットで表現できる値の範囲について

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,386

ai5

score 38

基本情報技術者試験

●nビットで表現できる値の範囲
0~2のn乗-1
例)4ビット (0~15)

●負数を2の補数で表すとき、nビットで表現できる整数の範囲
-2のn-1乗~+2のn-1乗-1
例)4ビット (-8~+7)


上の式の意味を4ビットの例で読み取ってください。
負数を2の補数で表すと、一番左の符号ビットが1のものは、負数になります。

とありますが、下記の表を見たとき、

【質問】どのような計算で負数のある10進数が導かれるのでしょうか?

0以上の10進数 4ビットの2進数 負数のある10進数
0 0000 0
1 0001 +1
2 0010 +2
3 0011 +3
4 0100 +4
5 0101 +5
6 0110 +6
7 0111 +7

|9|1001|-7|
|10|1010|-6|
|11|1011|-5|
|12|1100|-4|
|13|1101|-3|
|14|1110|-2|
|15|1111|-1|

※負数を2の補数で表すと、この範囲の値は16を引いた負数になる

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • ikedas

    2017/03/05 23:23

    その本のための解説動画も公開されているそうですが、観てみましたか。

    キャンセル

  • ai5

    2017/03/14 13:21

    お返事遅くなって申し訳ないです。動画も見ました。

    キャンセル

  • ikedas

    2017/03/14 15:28

    えーとすみません。何を見たんでしょうか。

    キャンセル

回答 2

0

【質問】どのような計算で負数のある10進数が導かれるのでしょうか?

その2進数の値にxを足すと10000になる。
xを10進数にしたものをマイナス符号にする

なぜにマイナス評価 間違っていたり解答になっていない(またはその他)なら理由をコメント欄にて指摘いただきたい

例:その2進数の値=1011

その2進数の値(1011)にxを足すと10000になる。x = 0101
x(0101)を10進数にしたも(5)のをマイナス符号にする(-5)

2進数の値 足すと10000になる値(2進数) 足すと10000になる値(10進数) 足すと10000になる値(10進数)をマイナス符号にする
1000 1000 8 -8
1001 0111 7 -7
1010 0110 6 -6
1011 0101 5 -5
1100 0100 4 -4
1101 0011 3 -3
1110 0010 2 -2
1111 0001 1 -1

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/14 15:28 編集

    別の問題なのですが、次の(2)がわかりません。
    0111と0111を足しても1110にならないんですよね。。。(重み表を使えばなりますがこの計算ではなりません)

    2の補数を使う理由
    固定長の2進数の足し算を行うと、繰り上がって、けたが増えることがあります。このような場合、固定長からあふれたビットは切り捨てます。

    例えば、7-4も、7+(-4)で計算することができます。4の2進数は0100で、2の補数はビットを反転した1011に1を加えた1100です。

    ・2進数の足し算
    (1)7+(-4)
    0111   ⁺7
    + 1100   -4
    ------
    10011
    =====================================
    (2)7+7
    0111
    +0111
    ────
    1110 → 0011(+2)
    ====================================
    負数を2の補数で表現しておくと、足し算だけで加減算を行うことが出来ます。
    コンピュータでは、減算を加算回路だけで行うことが出来る。
    負数を2の補数で表すとき、4ビットで表現できる値の範囲は、-8~+7でした。
    7+7の計算をすると、表現できる値の範囲を超え、負数のー2になってしまいます。

    キャンセル

  • 2017/03/14 15:59

    2の補数は理解できていますでしょうか?
    0111(+7)
    -0100 (-4)
    ---------------
    0011(+3) これが2の補数です。
    これに1足した値を引きたい数字に足すと答えが出る仕組みです。
    1011じゃないの?と思うでしょうが負の値を求めるときのビット計算は質問に書いてあると通り7~-8です。
    4ビット目の1は何?となるかと思いますが聞くだけじゃ絶対に覚えれないのでここだけは調べてください。すぐわかります。

    7+7がなぜ2になるかもこれがわかれば納得できるはずです。

    キャンセル

  • 2017/03/14 16:23

    なぜならないか不思議だ。質問者に説明してほしい。
    あとdekky0910さん、補数の説明違います。

    キャンセル

0

4 ビットの場合、0000 から 1 を引くと 1111 になります。
つまり -1 = 1111 です。
10000 から 1 を引いたと解釈できます。
同様に -2 は 10000 から 2 を引いたもので、-3 は 10000 から 3 を引いたものです。
ここで 10000 は 16 ですから、-1 = 16 - 1 = 15, -2 = 16 - 2 = 14, -3 = 16 - 3 = 13 となります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.99%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる