こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

基本情報技術者試験の問題(進数変換)

基本情報技術者試験の過去問を解いてるのですが、どうしても分からないんです。

以下原文

負数を2の補数で表現する符号付き16ビットの2進数を16進数で表記したもののうち、四倍するとけた あふれが生じるものはどれか。

不明な点は選択肢にあるDFFFという16進数表記が10進数にすると「-8193」になると解説に書いてある点です。DFFFを2進数にする方法は分かるのですが…。

よろしくお願いいたします。

投稿日時 - 2012-05-04 04:14:05

QNo.7456420

困ってます

質問者が選んだベストアンサー

先ず、「符号付き」とあるので、左端の1桁(ビット)は符号(0:正、1:負)であり、残りの15桁が整数値を表すことに注意。
2進数は、16進数と対応させるために4桁で区切って、敢えてブランクを入れると扱い易くなる。
問題の数値の整数部分は、(5FFF)
この2進表現は、
101 1111 1111 1111
元に戻すと、
010 0000 0000 0001 <--右端から見て最初の1まではそのまま、それから先はすべて反転させる。
これを10進数に変換すると、
8193=4096 X 2 + 256 X 0 + 16 X 0 + 1

マイナスの符号が付いていたので、本当は(-8193)

16進数は2進の4桁に対応するので、これを10進に変換する際の乗数は暗記した方が良い。
電卓で、16 X =、=、=、とやると出てくる数字、すなわち、16、256、4096、65536、ま、これ以上は無理でしょう....

負数を2の補数で記憶する意味は、コンピュータの減算回路の合理化だそうです。

参考URL:http://ja.wikipedia.org/wiki/2%E3%81%AE%E8%A3%9C%E6%95%B0

投稿日時 - 2012-05-04 17:03:57

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.3

DFFF
↓(2進化)
1101111111111111
↓(反転)
0010000000000000
↓(+1)
0010000000000001
↓(16進化)
2001
↓(10進化)
2×16^3+1=2×4096+1=8192+1=8193

どこが判らない?

因みに、4倍するということは左に2ビットシフトするのと同じ事。
1101111111111111
を2回左へシフトすると、符号ビットが0になっちゃうでしょ?

投稿日時 - 2012-05-04 07:27:19

ANo.2

http://okwave.jp/qa/q5982301.html の私の過去の回答ANo.3~ANo.5

投稿日時 - 2012-05-04 06:26:31

> 不明な点は選択肢にあるDFFFという16進数表記が10進数にすると「-8193」になると解説に書いてある点です。

それは、「2の補数」を理解していないということですので、まずは参考書で「2の補数」について勉強してください。

投稿日時 - 2012-05-04 04:56:29

あなたにオススメの質問