No.3ベストアンサー
- 回答日時:
No.1 です。
「補足」を見ました。「6」の問題の前の「4」「5」が「負数の表現には2の補数を用いている」と書いてあるから、「6」の負数にも「2の補数を用いる」と考えるのがふつうだと思いますけどね。
ただ、計算結果からすると、#1 に書いたように「符号を含めて8桁」では足らないので、そこをどう書くかですね。
質問者の答(#1 と同じですね)で「間違い」とされるなら
符号は別出しにして
(1) 100[10] + 85[10] = 0110 0100[2] + 0101 0101[2]
= 1011 1001[2] = 185[10]
(2) (-100) + (-52) = (-0110 0100[2]) + (-0011 0100[2])
= -1001 1000[2] = -152[10]
でしょうね。
書き方の問題だけど、(2) で「桁あふれ」させて
(2) (-100) + (-52) = 1001 1100[2] + 1100 1100[2]
= 1 0110 1000[2]
→ (桁あふれを負号とみなして)
= -(1001 1000[2]) ←「8ビット」分を2の補数に
= -152[10]
と書かせたいのでしょうか。
上のように「負号 + 絶対値」で計算したのと同じだけど。
出題者に題意を明確にしてもらうことが先決でしょう。
No.2
- 回答日時:
(2) の 2進数 101101000 が間違っています。
他の 3個は正解です。
10進数 -152 を 2進数で表すと、-10011000 です。
-152 が 10進 3桁であるのと同じように
-10011000 は 2進 8桁です。
符合は、桁数に含めて考えることはできません。
数学では、そうなっています。
パソコンの世界では、符合を別途つけるのを避けて
ビット列で負数を扱うために、整数ではなく
mod 2^m で計算することもあります。
(単に絶対値を表す 2進数に符合ビットを添えることもあるし、
1の補数とか、ちょっと変わった表現方法もありますけど。)
パソコン界の人は考え方がラフなので、mod 2^m のことを
「m桁の 2進数」とか言ってしまうことがありますが、
そのとき扱っているのは、あくまで mod 2^m の計算であって、
整数の計算を 2進法で書いたものとは違うのです。
別物なんです。
No.1
- 回答日時:
「8桁の2進数」で「正数、負数」を表す方法を理解していますか?
「2の補数」を使う方法です。
「2の補数」とは、相互に足し合わせると「桁あふれ + 0」になる数のことです。
つまり「8ビットの数」たとえば「0111 0101」があるときに、これとは別の「1000 1011」という2進数を考えます。
そうすると
0111 0101 + 1000 1011 = 1 0000 0000
になるので、右辺の「最上ビット(9ビット目)」が「桁あふれ」で消えるとすれば
0111 0101 + 1000 1011 = 0000 0000
ということになって、「たし合わせると 0 になる数」なので
「0111 0101」の絶対値が同じ負の数は「1000 1011」
ということになります。
それが「2の補数」です。
このためには、「すべての数を8ビットで表わす」(9ビット目は無視する)という「固定ビット数」の表記であることが条件です。
この方式だと、「8ビット」なら
・正数:0000 0000 ~ 0111 1111(10進数で 0~127)
・負数:1111 1111 ~ 1000 0000(10進数で -1~-128)
ということになります。
ということは、問題で示された計算結果は、「符号付8ビット2進数」では表現しきれないことになります。
問題文に、本当に「8桁の2進数で」と書いてありますか? 「符号ビットと8桁の2進数で」とか、「9桁の2進数で」「12桁の2進数で」と書かれていませんか?
このように、再上位ビットが「0」なら正数を、「1」なら負数を表わすことになり、実質的に「最上位ビットが符号を表す」ことになります。ただし、負数の場合には残りビットをそのまま読んでも「絶対値」にはならないので要注意です。(あくまで「足して 0 になる」という数ですので)
「2の補数」の作り方は
・元の数:0111 0101
↓
・0 と 1 とを逆転させる
→ 1000 1010
(これを「1の補数」と呼ぶことがある)
↓
・それに「1」を加える
→ 1000 1011
で出来上がり。
この「2の補数の作り方」は「正数→負数」を作るときだけではなく、「負数→整数」を作るときも全く同じです。
試しにやってみてください。
********************
以上の前提で問題を解けば、「進数」を数値の後に [ ] で示せば
(1) これは「正数」どうしなので、そのまま足し算を行ないます。
100[10] = 0110 0100[2]
85[10] = 0101 0101[2]
なので
100[10] + 85[10] = 0110 0100[2] + 0101 0101[2]
= 1011 1001[2] = 185[10]
ただし、近計算結果は「符号付8ビット2進数」では表せないので、 「符号ビットと8桁の2進数」つまり「符号ビットを付加して9ビットにした符号付2進数」で計算することにします。
100[10] = 0 0110 0100[2]
85[10] = 0 0101 0101[2]
なので
100[10] + 85[10] = 0 0110 0100[2] + 0 0101 0101[2]
= 0 1011 1001[2] = 185[10]
(2) 負数なので
まず
100[10] = 0 0110 0100[2]
52[10] = 0 0011 0100[2]
として、これを「2の補数」にして「負数表現」にします。
・元の数:0 0110 0100[2]
↓
・0 と 1 とを逆転させる
→ 1 1001 1011
↓
・これに「1」を加える
→ 1 1001 1100
これが「100[10] の負数表現」になります。
・元の数:0 0011 0100[2]
↓
・0 と 1 とを逆転させる
→ 1 1100 1011
↓
・これに「1」を加える
→ 1 1100 1100
これが「85[10] の負数表現」になります。
よって
-185[10] + (-52[10]) = 1 1001 1100[2] + 1 1100 1100[2]
= 1 0110 1000[2]
この2進数の絶対値を知るために「正数」に変換するには、
・元の数:1 0110 1000[2]
↓
・0 と 1 とを逆転させる
→ 0 1001 0111
↓
・これに「1」を加える
→ 0 1001 1000[2] = 152[10]
従って、
1 0110 1000[2] = -152[10]
ということになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 (12C)16進数÷(3C)16進数を計算して2進数で答えよ。 4Cだから1001100と解答したの 5 2022/05/22 15:59
- 情報処理技術者・Microsoft認定資格 2進数の問題を教えてください。 1 2022/07/27 09:42
- 計算機科学 2進数の計算について 2進数の値は全て8ビットで負数は2の補数形式とする。結果が8ビットで表現出来な 3 2023/07/22 14:08
- 数学 【 数Ⅰ 反復試行 】 問題 x軸上を動く点Aがあり、最初は原点にある。硬貨を投げて表が出たら正の方 4 2022/09/29 17:43
- 数学 以下を10進数の小数で表すことを考える . . (0.101)2進数 小数部分の数値を答えよ。 循環 4 2022/05/22 15:09
- 計算機科学 ビット計算 2 2023/04/16 14:26
- 数学 1から6が等しい確率で出るサイコロを使ってすごろくを行う。あがりのnマス手前からぴったりあがることが 3 2022/07/02 17:00
- 数学 数学の問題の解説お願いします! 4 2022/08/28 05:22
- 情報処理技術者・Microsoft認定資格 55の2進数がわかりません 110111 1 2023/03/04 21:58
- 大学・短大 いくら考えても以下の問題の解き方が分かりません。 どなたか、解説していただけると嬉しいです。 日本の 1 2022/07/06 02:52
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
6ビット(符号含む)の二進数
-
16ビットの符号付固定小数点...
-
ALUのオーバーフローフラグの生...
-
16ビット浮動小数点数の表現...
-
【有効数字について】 授業で、...
-
携帯電話の略語であるMBって英...
-
ワードの改行について
-
アルファベット30文字は何バイ...
-
もしコンピューターが2進数か...
-
16bitはダイナミックレンジが97...
-
文字の容量(サイズ)についての...
-
8進数 8進数の47+32の答えを 8...
-
EXCELでの16進数取り出し、上...
-
1Mバイトって何バイト?
-
ffftpのサイズの単位は何でしょ...
-
文字数(バイト数)の数え方が...
-
H8Sで割り込み発生時の飛び先ア...
-
KBとMB
-
文字化けはなぜ日本語が入って...
-
実行計画の「COST」と「BYTE」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SSDのデータがビット落ちにより...
-
EXCEL16進⇒浮動小数変換したい
-
6ビット(符号含む)の二進数
-
エクセルVBAで xlOn xlOff の切替
-
2ビット、3ビット、4ビットのグ...
-
ALUのオーバーフローフラグの生...
-
エクセルでビット1をカウント J...
-
9ビットの2進数を符号付整数…
-
データ量の単位について教えて...
-
16ビットの符号付固定小数点...
-
先程+20の2の補数表現を質問さ...
-
16ビット浮動小数点数の表現...
-
基本情報技術者試験問題
-
2進数の補数表示について
-
(<<1) & 0xeeeeなどが分かりません
-
2の補数形式において、アンダー...
-
基本情報処理技術者試験問題が...
-
浮動小数点の問題です。
-
●ビットで表現できる状態は、最...
-
【有効数字について】 授業で、...
おすすめ情報
https://drive.google.com/file/d/1TR0CXWf-g0K4z2m …
上リンクの6番が今回質問させて頂いた内容です。
この場合はどう表現をしたらよいのでしょうか?