負数を2の補数で表現する符号付き16ビットの2進数を16進法で表示したもののうち,4倍するとあふれが生じるものはどれか。
ア 1FFF イ DFFF ウ E000 エ FFFF
(平成19年春 問3)
この問題の解説は以下の通りです。
DFFFの2進数表示は、1101 1111 1111 1111 で、4倍すると0111 1111 1111 1100 となり、負数が正数になるのであふれが生じる。
このように書いてありました。
1つ目の質問は、4倍すると1111 1111 1111 1100 となり、正数にはならないのではないか、ということです。
2つ目の質問は、直接この問題には関係ないかもしれないのです。
「元の数が負数のとき、左シフトで0が消えたとき、桁あふれという」と習ったのですが、なぜ0が消えると桁あふれとなるのでしょうか。
以上です。宜しくお願い致します。
No.4ベストアンサー
- 回答日時:
2進法の負数の表記法をしっかりと理解できていないようですね。
2進数の負数は、「2の補数」という表記法を取ります。ここまではよいですよね?
つまり、一番左のビットが「0」のとき正数、「1」のとき負数とするお約束です。
ただし、これは一番左を「符号ビット」として固定して使用するというわけではありません。あくまで。一番左のビットも含めて「数値」を表しているのです。
従って、2倍、4倍で左シフトするときにも、全体を左シフトし、符号を表す一番左のビットだけ特別扱いするものではありません。
これは、「正数」のときはすんなり納得できるはずです。
たとえば、十進数で「43」(例なのでいくつでもかまいません)は、2進数で
0000 0000 0010 1011
です。これを、2倍、4倍すれば、
2倍→ 0000 0000 0101 0110 (十進数で「86」)
4倍→ 0000 0000 1010 1100 (十進数で「172」)
で、上位桁は「0」なので桁あふれはしていません。
これが、左シフトを繰り返して、
0101 0110 0000 0000
になったところで、さらに2倍すると、
1010 1100 0000 0000
となり、一番左が「0→1」となって桁あふれします(補数表記だと「負数」になってしまう)。要するに、大きくなりすぎて「表記範囲逸脱」となるわけです。
これが「負数」の場合だと、「0」と「1」の関係が逆転するわけです。つまり、「-43」は、補数表記(2の補数)で
1111 1111 1101 0101
となります。これを2倍、4倍すると、
2倍→ 1111 1111 1010 1010 (十進数で「-86」)
4倍→ 1111 1111 0101 0100 (十進数で「-172」)
となります。上の方に書いた「正数」とは、それぞれ2の補数であることが分かりますよね。
つまり、「正数」では「0が桁あふれしても問題ない」のと同じように、負数では「1が桁あふれしても問題ない」のです。何故なら、補数表記だからです。
これが正数と同じように、左シフトを繰り返して、
1010 1010 0000 0000
になったところで、さらに2倍すると、
0101 0100 0000 0000
となり、一番左が「1→0」となって桁あふれします(突然「正数」になってしまう)。マイナス側に大きくなりすぎて「表記範囲逸脱」となるわけです。
ということで、非常に長くなりましたが、「正数の0の桁上がりは桁あふれではない」のと同じように、補数表記だと「負数の1の桁上がりは桁あふれではない」ということを理解すれば、納得できるのではないでしょうか。
ご質問に対しては、
>1つ目の質問は、4倍すると1111 1111 1111 1100 となり
→いいえ、1101 1111 1111 1111 を4倍すると、単に2桁左シフトで 0111 1111 1111 1100 となります。
上に書いたように、一番左のビットが「符号ビットで固定」と考えるのは間違いです。
>2つ目の質問:
>「元の数が負数のとき、左シフトで0が消えたとき、桁あふれという」と習った
→正確には、「元の数が負数のとき、左シフトで数値としての0が消えたとき(数値としての0が符号ビットの位置になってしまったとき)、桁あふれという」ということかと思います。
回答ありがとうございます。
>一番左のビットが「符号ビットで固定」と考えるのは間違いです。
この助言で全てが解決しました!詳しく分かりやすい解説に本当に感謝します。ずっと勘違いしていたみたいです。
また、2つ目の質問にも丁寧に教えて下さり大変感謝いています。
No.3
- 回答日時:
補足2です、
マシン語レベルで考えると、最上位ビットを変えずに左シフト(×2)する命令はありません
符号付シフト命令は、
左シフト(×2) 8086 SAL命令 Z-80 SLA命令 AVR LSL命令 に相当します
右シフト(÷2) 8086 SAR命令 Z-80 SRA命令 AVR ASR命令 に相当します
左シフト命令は、全ビットを上位にシフトさせ、最下位に0が入ります
右シフト命令は、全ビットを下位にシフトさせ、最上位にシフトさせる前の最上位ビットがはいります
(左シフト命令は、符号付でも、符号無しでも動作は変わりません)
詳しくは命令表を参照して下さい。
http://software.aufheben.info/kouza/beginner/kou …
http://www.zilog.com/docs/z80/um0080.pdf
http://www.avr.jp/user/DS/PDF/AVRinst.pdf
>左シフト命令は、全ビットを上位にシフトさせ、最下位に0が入ります
右シフト命令は、全ビットを下位にシフトさせ、最上位にシフトさせる前の最上位ビットがはいります
(左シフト命令は、符号付でも、符号無しでも動作は変わりません)
おっしゃる通りに覚えておきます。
何度も回答ありがとうございました!
No.2
- 回答日時:
補足です、
数学上はマイナス値を二倍にしてもプラスになることはありません
符号付は数値部15ビットで表します、15ビットで表せない数になると、オーバーフローエラーです
左シフト(×2)して、最上部ビットが変わらなければ、オーバーフロー無しと判断できます
「右シフト(÷2)では、最上部ビットを変えずにシフトする命令があります」
回答ありがとうございます。
>左シフト(×2)して、最上部ビットが変わらなければ、オーバーフロー無しと判断できます
最上部ビット=符号ビットと解釈しても大丈夫ですか?
このように解釈するとき、
「左シフトのとき、最上部ビット(符号ビット)はシフトされ、
右シフトのとき、最上部ビット(符号ビット)はシフトされない」
ということでしょうか。符号ビットは左シフトにしろ、右シフトにしろシフトされないと学習したのですが。。
もしかして論理シフトで議論すべき問題だったのでしょうか。
論理シフトならば最上部ビットはシフトされるのでつじつまが合うと思います。
お手数かけます。。
No.1
- 回答日時:
1) 符号付の場合 最上位ビットが、正負を表します
0xDFFF = B'1101111111111111'
0xBFFE = B'1011111111111110' *2
0x7FFC = B'0111111111111100' *4 最上位ビットが変化する行あふれ、正の数になる
0x0000-0x7FFF = 0 ~ 32767
0x8000-0xFFFF = -32768 ~ -1 補数を表します
補数とは加算するだけで、減算と同じ結果になります
0x0001 + 0xFFFF = 0x0000
1 + (-1) = 0 と同じことです
この回答への補足
回答ありがとうございます。
最上位ビット即ち符号ビットはシフトしないと考えているので、
元の数
[1]101 1111 1111 1111
を4倍して、
10[1]111 1111 1111 1100
即ち1111 1111 1111 1100
になると考えているのですがこれが間違ってますか?符号ビットは[]で分かりやすくしています。
このように考えれば、正から負になることはありえないと思ってしまうんですが。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 計算機科学 ビット計算 2 2023/04/16 14:26
- 数学 以下の問題が分かりません。 8ビット浮動小数点数が、最上位ビットから順に符号1ビット、指数部3ビット 4 2023/07/22 16:06
- その他(データベース) 4進数風なバーコードは何ですか? 2 2022/11/28 23:33
- その他(形式科学) RSA暗号について 1 2022/06/01 00:16
- Excel(エクセル) エクセルのセルの書式設定・ユーザー定義の条件設定について 1 2022/08/17 21:56
- その他(データベース) Accessフォームにて指定のフィールドの平均値を小数点第一位で表示できない 2 2022/08/30 17:19
- 情報処理技術者・Microsoft認定資格 2進数の問題を教えてください。 1 2022/07/27 09:42
- Ruby プログラミングについてです。教えていただきたいです。 実行例のように、整数xが1から12までにつき、 2 2022/12/19 22:47
- 情報処理技術者・Microsoft認定資格 情報技術の問題についてです。 10進数の−36を以下のような16ビットの浮動小数点表示にするといくつ 3 2022/05/21 19:53
- 数学 【 数A 順列 】 問題 6個の数字0,1,2,3,4,5を使ってできる次の ような整数は何個あるか 1 2022/06/19 12:18
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
あなたにとってのゴールデンタイムはいつですか?
一週間の中でもっともテンションが上がる「ゴールデンタイム」はいつですか? その逆で、一週間でもっとも落ち込むタイミングでも構いません。 よかったら教えて下さい!
-
遅刻の「言い訳」選手権
よく遅刻してしまうんです…… 「電車が遅延してしまい遅れました」 「歯医者さんが長引いて、、、」 「病院が混んでいて」 などなどみなさんがこれまで使ってきた遅刻の言い訳がたくさんあるのではないでしょうか?
-
許せない心理テスト
私は「あなたの目の前にケーキがあります。ろうそくは何本刺さっていますか」と言われ「12本」と答えたら「ろうそくの数はあなたが好きな人の数です」と言われ浮気者扱いされたことをいまだに根に持っています。
-
お風呂の温度、何℃にしてますか?
みなさん、家のお風呂って何℃で入ってますか? ぬるめのお湯にゆったり…という方もいれば、熱いのが好き!という方もいるかと思います。 我が家は平均的(?)な42℃設定なのですが、みなさんのご家庭では何℃に設定していますか?
-
問:負数を2の補数で表現する符号付き16ビットの2進数を16進法で表示
情報処理技術者・Microsoft認定資格
-
次の式は何進法で成立するか。という問題が理解できません。
情報処理技術者・Microsoft認定資格
-
平成15年春の問5が解説を読んでもわからない
情報処理技術者・Microsoft認定資格
-
-
4
標準正規分布について
数学
-
5
情報処理の問題で、これがよく分からない
情報処理技術者・Microsoft認定資格
-
6
e^-2xの積分
数学
-
7
10進数の分数 1/32 を16進数の小数で表すと?(基本情報試験)
情報処理技術者・Microsoft認定資格
関連するカテゴリからQ&Aを探す
医師・看護師・助産師
薬剤師・登録販売者・MR
医療事務・調剤薬局事務
歯科衛生士・歯科助手
臨床検査技師・臨床工学技士
理学療法士・作業療法士・言語聴覚士
臨床心理士・心理カウンセラー・ソーシャルワーカー
介護福祉士・ケアマネージャー・社会福祉士
弁護士・行政書士・司法書士・社会保険労務士
フィナンシャルプランナー(FP)
中小企業診断士
公認会計士・税理士
簿記検定・漢字検定・秘書検定
情報処理技術者・Microsoft認定資格
TOEFL・TOEIC・英語検定
建築士
インテリアコーディネーター
宅地建物取引主任者(宅建)
不動産鑑定士・土地家屋調査士
マンション管理士
電気工事士
美容師・理容師
調理師・管理栄養士・パティシエ
シェフ
保育士・幼稚園教諭
教師・教員
国家公務員・地方公務員
警察官・消防士
その他(職業・資格)
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【機械図面】 最大値・最小値...
-
実績を積むという表現
-
「最大300字程度」
-
「充足に達しましたので」これ...
-
敬語の使い方
-
言葉遣いについて ○○を取りに行...
-
桁あふれがわかりません
-
機械組み立て工場での電動ドラ...
-
高窓(ハイサイド窓)を平面図...
-
1の補数の2進数での減算(基本...
-
変電所のことをS/Sと表現するそ...
-
超音波検査について
-
64bit変数までしかサポートされ...
-
0xFD30 2バイトの16進数表現で...
-
ビジネスメールについて
-
フォトショップをつかって質感...
-
溶血の度合いの分類について
-
10分の1は「10/1 それとも1/10...
-
1億x1億はいくらでしょうか?
-
50以下は“50”も入るのですか?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実績を積むという表現
-
【機械図面】 最大値・最小値...
-
言葉遣いについて ○○を取りに行...
-
「充足に達しましたので」これ...
-
敬語の使い方
-
「最大300字程度」
-
どなたか教えいただけませんか?
-
高窓(ハイサイド窓)を平面図...
-
ビジネスメールについて
-
16進数の表し方について
-
1の補数の2進数での減算(基本...
-
桁あふれがわかりません
-
機械組み立て工場での電動ドラ...
-
変電所のことをS/Sと表現するそ...
-
いつ電話をよこすの?という表...
-
味の表現で「どっきりする」っ...
-
超音波検査について
-
基本情報技術者試験 論理演算...
-
ピンクの象について
-
0xFD30 2バイトの16進数表現で...
おすすめ情報