- ベストアンサー
255の2の補数、B'00000001'が-255を表さない理由は
こんにちは。 8ビットマイコンで、 127=B'01111111'の2の補数 B'10000001'は-127を 表します。 しかし、8ビットマイコンで、 マイナスを扱うのは、-127~127で 先頭一桁は正負を表すので 使えない、と説明されています。 しかし、 255=B'11111111'の2の補数を、 B'00000001'を-255としても、 問題ないのでは、ないでしょうか。 両者を足せば、0になります。 先頭ビットを使ってはいけない理由は、 何でしょうか。 (127までなら、マイナスは先頭 ビットが、0になる。分類に便利、 というなら、分かりますが)。 何か分かる人がいましたら、 よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (5)
- jjon-com
- ベストアンサー率61% (1599/2592)
- jjon-com
- ベストアンサー率61% (1599/2592)
- annyG
- ベストアンサー率25% (10/39)
- 中京区 桑原町(@l4330)
- ベストアンサー率22% (4373/19605)
- annyG
- ベストアンサー率25% (10/39)
関連するQ&A
- 2の補数
(1)10進数1、2、3の値を2進数3桁で記述しなさい。またこれらの2の補数を求め3桁で記述しなさい。 (2)2進数における「2の補数」は、コンピュータにおける数値の扱いにおいて重要な役割を担うことができる。その役割について説明しなさい。 (3) (1)の解答から(2)で解答した役割は適切に機能していることが分かる。その理由を説明しなさい。 (4)2進数で表記したある数値の「2の補数」の求め方としてして、「各桁の1と0を反転し、それに1を加える」という方法がある。この方法が成立する理由を説明しなさい。(ヒント:2^b-1がどういう数であるかを考えるとよい) この問題の(2)からどう説明していいか分かりません。 どなたか教えて下さい。
- ベストアンサー
- 数学・算数
- 2の補数の計算について
C言語のプログラム中で得られた10進数の値を,固定長16ビットの2進数に変換したいと考えています. しかしながら,得られた10進数の値が負数であった場合,それを負数と判断し,2の補数として出力したいのですが,なかなかいい方法が思いつきません… 例えば処理中で -1.915098 といったような10進数の値を2進数に変換し,先頭の1ビットが正負符号の2の補数として表現するためにはどのように記述すればよいでしょうか? 簡単で構いませんので,記述例も書いていただけると助かります…
- ベストアンサー
- C・C++・C#
- 補数について質問
以下はJavaの参考書に掲載されている補数についての問題です。 疑問点にお答えいただけましたら幸いです。 次の10進数の補数を8桁の2進数で求めなさい A 15 B 0 C 1 質問1:Bについて、10進数の補数が0となっていますが、こんなのありえるんですか? 補数の定義は、「ある数 A に加えると、和の桁がひとつ上がる最小の数」ということなので、Bならある数がAが100でそれに加える数が0ということでしょうか? 質問2:質問1で記した定義に従い、補数15のある数Aとは85ですか? 質問3:「次の10進数の補数を8桁の2進数で求めなさい」という問題、そもそもどういう意図があるんですか?何故10進数の補数を8桁の2進数で求めさせるんですか? 質問4:この問題、10進数の補数を8桁の2進数に変換する問題かと思いきや、この10進数の補数を2進数に変換し、さらにその変換した2進数を補数にしたものが答えとなっています。 何故ですか?問題文おかしいような、、、 僕が読解を間違えたのでしょうか?
- ベストアンサー
- Java
- 補数について質問
何度も何度もすみません。 例えば2進数であれば、ある数aの補数はその数aの負の値ですが、 その理由は、桁あふれ無視するからですか? 例えば10進数の10^2の補数表示では、39の補数は61ですが、桁あふれを無視するので、補数表現としては61と-39は同じと考えられるからですか? 絶対yesかNoかで考え方が合っているか判定してください。 絶対yesかNoかでお願いします。 具体的な式で説明します、この考え方も正しいか判定してくだされば幸いです。 (ex:51-39 補数の概念で計算:51+(61-100)=12 (61-100)は最上位の桁を無視する式に対応していて、その答えは-39。
- ベストアンサー
- 数学・算数
- 負の整数を求める
負の整数を表現する問題で質問です。 4ビットのパターン1101を下記の通りに求め、小さい順に並び変える場合、 1, 1の補数による表現 2, 2の補数による表現 3, 絶対値に符号を付けた表現(先頭ビットが0は整数、1は負数) 1の補数は反転なので、0010とわかりますが、回答にこれは10進数の2だからと書いてありました。そこまではわかります。ただ、そのあとに、10進数の2だから、1101はマイナス2、とありました。なぜここでマイナス2となるのでしょうか? 2の補数の場合は反転した1の補数に1を加算して、0011とわかりました。しかし、またそれはマイナス3となっています。 3の絶対値に限っては先頭ビットは1なので負で、残りの3ビットは101で、10進数の5だから、マイナス5とあります。これに限ってはよくわかりません。 どなたか説明をお願いします。
- ベストアンサー
- 数学・算数
- 補数について質問--僕はプログミングしてます
例えば2進数であれば、ある数aの補数はその数aの負の値ですが、 その理由は、最上位の桁を無視するからですか? 例えば10進数の10^2の補数表示では、39の補数は61ですが、最上位の桁を無視するので、-39が補数とも言えますよね? yesかNoかでお答え頂けましたら幸いです。 具体的な式で説明します、この考え方も正しいか判定してくだされば幸いです。 (ex:51-39 補数の概念で計算:51+(61-100)=12 (61-100)は最上位の桁を無視する式に対応していて、その答えは-39。
- ベストアンサー
- 数学・算数
- 2の補数表現2進数が表す10進数は?、
次の2の補数表現の2進数が表す10進数はいくらか? 1111 1111 1111 1111 1111 1111 1111 1111 という問題があるのですが、 これを解くと、まず、上のビット列は2の補数表現なのだから、これはマイナスですよね?そして、次にビット列を2の補数を求めるやり方でやると元の数がわかりますよね(この辺がいまいち解っていない)? という事は全ビットを0にして、最下位ビットに1を 足せばいいから0000 0000 0000 0000 0000 0000 0000 0000 + 1 =0000 0000 0000 0000 0000 0000 0000 0001 となります。10進数だと 1を表すから答えはー1という事になるのでしょうか?お願いします。
- ベストアンサー
- その他(インターネット・Webサービス)
- 2進数の補数表示について
よろしくお願いします 「負の数(-128)を8ビットの2の補数表示するとき、どうなるか?」 の問題で、わからない箇所があります。 1.最上位ビットは正・負を表す。 2.負の数:-127を2の補数を使用して表現する。 (例)-1(10)==> まず、正で考える。 ==> 0000 0001(2) 「確認」 1111 1110(反転) +1(プラス1) ---------- 1111 1111(2)(答え) -127(10) ==>0111 1111(2) まず、正で表す。 「確認」 1000 0000(反転) +1 (プラス1) ---------- 1000 0001(答え) ここからが疑問なんです。 -128(10)の場合 ==>1000 0000(2) まず、正で考える。 「確認」 0111 1111(反転) +1 (プラス1) ----------- 1000 0000(2)(答え) ↑ ・答えがプラスの128(10)=>10000000(2)と同じではない でしょうか? ・このときの最上位ビットは桁上がりの「1」と正負の違 いを表す「1」のどちらを表しているのですか? ・たとえば「負数を2の補数で表すとき,8ビットで 表現できる整数の範囲は10進数でどれか。」など の問題で答えが正の127は理解できるのですが、 負は「-128」ということがよくわかりません。 一応検索をしてみましたが、類似回答では理解できませんでした。よろしくお願いします。
- ベストアンサー
- その他([技術者向] コンピューター)
お礼
回答ありがとうございます。 00000001は1でも-255でも あるのではないでしょうか。 というのは、10000001は、 129でも-127でもある、 と本に書いてありました。