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

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

ただいまの
回答率

90.50%

  • 基本情報技術者

    53questions

    基本情報技術者とは、経済産業省が行う国家資格「情報処理技術者試験」の区分の一つです。試験ではプログラマーやシステムエンジニアなどIT業界で働くために必要とされる基礎知識や情報処理において論理的な考え方ができるか等が問われ、企業から高い評価を獲ることができ、IT業界の入門的な資格として人気があります。

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

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 974

ai5

score 32

基本情報技術者試験

●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/02 19:51

    すみません、ある程度知識ある方ならわかるご指摘だと思うのですが、私はわかりません。。

    キャンセル

  • 2017/03/03 10:24

    2進数の足し算/引き算ができることが前提となるので、これがわからないのであれば
    まず2進数の足し算/引き算を勉強してください。
    0001+0001=0010
    0010+0001=0011
    0011+0001=0100
    ・・・・

    1000-0001=0111
    0111-0001=0110
    0110-0001=0101
    ・・・

    キャンセル

  • 2017/03/14 14:26

    2進数の引き算苦手みたいです。よくわかりません。。。
    1000-0001=0111 左から1借りるはずなのになぜ4桁目が0なのでしょう?
    0111-0001=0110 これはわかります。 
    0110-0001=0101  0110の2桁目の1を借りてきて-0001して、答えの1桁目が0になり、0100になると思ったのですが、なぜこのようになるのでしょうか?

    キャンセル

  • 2017/03/14 14:56 編集

    10進数でも一桁上の1を借りてきたら基数となる10から引きますよね。2進数も同じで1を借りてきたら基数となる2から引いてください。

    0010-0001=0001
    2進数ふた桁の引き算です。これは解りますか?
    これが解らないと説明のしようがないです。

    キャンセル

  • 2017/03/14 15:05

    足し算はわかるのでしょうか?
    「引き算」の反対は「足し算」なので、
    1000-0001=0111
    だとすれば
    0111+0001 = 1000
    になるわけですが、これはわかりますか?
    「繰り上がり」をしているわけです。
    引き算の場合「繰り下がり」ですが、それはわかりますか?

    キャンセル

  • 2017/03/14 15:06

    筆算で書いてみるとわかりやすいですよ。
    1000
    -0001
    引き算の筆算は小学校で習っていると思うので大丈夫だと思うのですが2進数の場合は上から借りてくる数字は2です。
    4桁目まで0なので1000.0200.0120.0112.そして0001を引いて0111になります。

    手元にペンと紙があったら一度書いてみてください。
    簡単ですよ

    キャンセル

  • 2017/03/14 15:10

    Y.H.さん
    2進数も同じで1を借りてきたら基数となる2から引いてください。
    ここを見落としていたかもしれません。
    1から1を引いていました。
    なぜかというと2進数は0,1で2繰り上げになるので2を使ってはいけないと思っていました。

    jm1156さん
    0111+0001 = 1000はわかります。

    キャンセル

  • 2017/03/14 15:17

    dekky0910さん
    ものすごくわかりやすいです。ありがとうございます。
    わかってきたかもしれません。

    キャンセル

  • 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 となります。

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

同じタグがついた質問を見る

  • 基本情報技術者

    53questions

    基本情報技術者とは、経済産業省が行う国家資格「情報処理技術者試験」の区分の一つです。試験ではプログラマーやシステムエンジニアなどIT業界で働くために必要とされる基礎知識や情報処理において論理的な考え方ができるか等が問われ、企業から高い評価を獲ることができ、IT業界の入門的な資格として人気があります。