
負数を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も見ています
-
「それ、メッセージ花火でわざわざ伝えること?」
「それ、メッセージ花火でわざわざ伝えること?」というメッセージを教えて下さい
-
【お題】甲子園での思い出の残し方
【お題】「球場の砂を持って帰る」はもう古いと思った高校球児が、甲子園で負けた際に、思い出に残そうと思って行ったこと
-
性格いい人が優勝
できるだけ性格いい人になって回答をお願いします。
-
これ何て呼びますか Part2
あなたのお住いの地域で、これ、何て呼びますか?
-
あなたが好きな本屋さんを教えてください
どのくらいの規模間で、どのような本が並んでいるか、どのような雰囲気なのかなどなど...
-
問:負数を2の補数で表現する符号付き16ビットの2進数を16進法で表示
情報処理技術者・Microsoft認定資格
-
次の式は何進法で成立するか。という問題が理解できません。
情報処理技術者・Microsoft認定資格
-
情報処理の問題で、これがよく分からない
情報処理技術者・Microsoft認定資格
-
関連するカテゴリからQ&Aを探す
医師・看護師・助産師
薬剤師・登録販売者・MR
医療事務・調剤薬局事務
歯科衛生士・歯科助手
臨床検査技師・臨床工学技士
理学療法士・作業療法士・言語聴覚士
臨床心理士・心理カウンセラー・ソーシャルワーカー
介護福祉士・ケアマネージャー・社会福祉士
弁護士・行政書士・司法書士・社会保険労務士
フィナンシャルプランナー(FP)
中小企業診断士
公認会計士・税理士
簿記検定・漢字検定・秘書検定
情報処理技術者・Microsoft認定資格
TOEFL・TOEIC・英語検定
建築士
インテリアコーディネーター
宅地建物取引主任者(宅建)
不動産鑑定士・土地家屋調査士
マンション管理士
電気工事士
美容師・理容師
調理師・管理栄養士・パティシエ
シェフ
保育士・幼稚園教諭
教師・教員
国家公務員・地方公務員
警察官・消防士
その他(職業・資格)
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・【お題】甲子園での思い出の残し方
- ・【お題】動物のキャッチフレーズ
- ・人生で一番思い出に残ってる靴
- ・これ何て呼びますか Part2
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・あなたが好きな本屋さんを教えてください
- ・かっこよく答えてください!!
- ・一回も披露したことのない豆知識
- ・ショボ短歌会
- ・いちばん失敗した人決定戦
- ・性格悪い人が優勝
- ・最速怪談選手権
- ・限定しりとり
- ・性格いい人が優勝
- ・これ何て呼びますか
- ・チョコミントアイス
- ・単二電池
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・泣きながら食べたご飯の思い出
- ・一番好きなみそ汁の具材は?
- ・人生で一番お金がなかったとき
- ・カラオケの鉄板ソング
- ・自分用のお土産
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
実績を積むという表現
-
【機械図面】 最大値・最小値...
-
「充足に達しましたので」これ...
-
言葉遣いについて ○○を取りに行...
-
「最大300字程度」
-
高窓(ハイサイド窓)を平面図...
-
ビジネスメールについて
-
敬語の使い方
-
溶血の度合いの分類について
-
変電所のことをS/Sと表現するそ...
-
16進数の表し方について
-
ビスなどで打ち付け固定した物の...
-
いつ電話をよこすの?という表...
-
基本情報のもんだいについて
-
初級シスアド
-
超音波検査について
-
10分の1は「10/1 それとも1/10...
-
50以下は“50”も入るのですか?
-
1億x1億はいくらでしょうか?
-
5進法を10進法への直し方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
実績を積むという表現
-
【機械図面】 最大値・最小値...
-
「最大300字程度」
-
「充足に達しましたので」これ...
-
言葉遣いについて ○○を取りに行...
-
ビジネスメールについて
-
敬語の使い方
-
高窓(ハイサイド窓)を平面図...
-
16進数の表し方について
-
いつ電話をよこすの?という表...
-
桁あふれがわかりません
-
超音波検査について
-
1の補数の2進数での減算(基本...
-
変電所のことをS/Sと表現するそ...
-
基本情報の問題にて
-
0xFD30 2バイトの16進数表現で...
-
広告に「絶対」という表現を使...
-
どのビットが誤っているか求め...
-
機械組み立て工場での電動ドラ...
-
味の表現で「どっきりする」っ...
おすすめ情報