基本情報技術者試験
次の問題の解答までの道筋がわかりません。
負数を2の補数で表す8ビットの数値がある。この値を10進数で表現すると
-100である。
この値を符号なしの数値として解釈すると、10進数でいくらか?
答え)156
x-256 = -100
符号なしの数値として解釈とはどのようなもので、
なぜこれは156になるのでしょうか?
お手数ですが、ご教授お願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答4件
0
8 ビットの二進数を考えます。
最小値は 0 で、二進数で表すと 0000 0000 です。
最大値は 1111 1111 で、十進数で表すと 255 です。
この最大値に 1 を足すと、1 0000 0000 となり、桁あふれしてしまいます。あふれた最高位を削除すると 0000 0000 となります。
つまり、8 ビットの二進数で考える限り、1111 1111 + 0000 0001 = 0000 0000 が成り立ちます。これを変形すると、0000 0000 - 0000 0001 = 1111 1111 となります。
十進数で表記すると、0 - 1 = 255 つまり -1 = 255 となるのです。
8 ビット二進数では、-1 も 255 も、ともに 1111 1111 です。
しかし、それでは都合が悪いこともあります。そこで、一番上のビットが 1 である時だけ負の数とみなそうじゃないかというのが問題の「負数を2の補数で表す8ビットの数値」です。この最上位ビットを符合と呼びます。
この場合、最大値は 0111 1111 = 127 であり、最小値は 1000 0000 = -127 です。
符合無しの数値とは、一番上のビットを負の数の符号として使わない方法で表せる数値で、先程の説明のように 0 から 255 までの数になります。
二進数では同じ表現でも、十進数では二種類の数を表します。
この問題は、十進数で -100 となる数を符合ありの二進数で表し、それを符号なしの二進数と解釈すると十進数ではいくらになるかという問題です。
0000 0000 は 0 または 256 になりますから、変換には 256 から元の数を引けばいいということになります。
投稿2017/03/02 09:09
総合スコア28673
0
先ず100の8bit符号なし2進数表記を考えます。
100=64+32+4
01100100
次に、-100の8bit符号あり2進数表記を考えます。
10011011 1の補数(ビットを反転)
10011100 2の補数(1加算)
最後に、8bit符号なし2進数として読みます。
128+16+8+4=156
投稿2017/03/02 08:56
編集2017/03/02 08:57総合スコア1280
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/13 09:38
2017/03/13 09:46

0
マイナスは最大bit(MSB)が1であり、10000000は-127です。
そこで -100は8bit符号ありでは以下のように表現できる。
10011100
これを符号なしとすると 156 です。
投稿2017/03/02 07:26

退会済みユーザー
総合スコア0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。