• ベストアンサー

二進数を負で表す

-256を2進数の9ビットで表すのに困っています まず256を2進数で表し、(100000000) それを反転させ1を足す (000000001 + 1) そうすると答えは000000010になります しかしこれは最上位のビットが0なので+の値になってしまいます どうすれば-256を9ビットで表せますでしょうか?

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

  • ベストアンサー
  • unazukisan
  • ベストアンサー率20% (223/1066)
回答No.1

ビットを反転させるのが間違っています。 256 → 10000000 ビットを反転    ↓       011111111 それに1を足す。 ↓       10000000 となり、符号付きで考える場合、-256は「10000000」になります。

lockwell
質問者

お礼

あ、本当ですね。反転が間違ってますね^^ お二方、ご丁寧にありがとうございました! おかげさまで理解できました!

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.2

2's complement(2の補数)で表現できます。 下記を参照ください。 http://www.jtw.zaq.ne.jp/kayakaya/new/kihon/text/fusu.htm 9ビットだと、 +255 :011111111 ... 0 :000000000 -1 :111111111  ... -256 :100000000 となります。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 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」ということがよくわかりません。 一応検索をしてみましたが、類似回答では理解できませんでした。よろしくお願いします。        

  • 負の二進数

    2の補数表現を用いた符号付き8ビットの2進数のとき 10進数で -6 の値はどうなるのでしょう・・・? 16進数時の値と考え方も教えていただければ幸いです・・。 よろしくお願いいたします。

  • 負の2進数の表示がわかりません

    Q1:負の数(例えば10進数の[-2])を2進数,4ビットで表すには, 1010(MSDの[1]は[-]を表して,後半の3桁は[2])か 1110([0001]の2の補数) どちらが正しいのですか?(学校ではどちらも習いました) またQ2のような計算をするには補数による表示でないとなりませんか?(絶対値に符号をつけるだけだと計算が合いません) Q2:4ビットで表された2進数の計算で    0101-0010=0101+(1110)=10011 となり,答えが5ビットになってしまいます.下4桁で考えると答えが合っている気がします.これで合っていますか?

  • "2進数"で負の小数点の表し方?

    2進数で、負の整数の表現方法は分かるのですが 小数点となると分かりません。 質問(1)  ・上位1bitを符号ビットとする4bitで2進数を表すと  10進数 → 2進数    7 → 0111    1 → 0001    0 → 0000   ー1 → 1111   ー8 → 1000  さらに、小数を表す1bit追加すると   0.5 → 00001 ?   -0.5 → 11111 ?  上記であってますか?  そして、0.75は?000011?  以上、宜しくお願い致します。

  • 負の整数を求める

    負の整数を表現する問題で質問です。 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進数の足し算について

    CPUは引き算を行うことができず、2の補数を用いて引き算を足し算として考えれると知りました。 そこで8bitの最上位桁を符号とした7bitの引き算-24+(-8)を計算してみたのですが 24(10進数)→0011000(2進数)→1101000(2の補数) 8(10進数)→0001000(2進数)→1111000(2の補数) 符号 7654321←bit  1 1101000 +1 1111000  X 1100000 となり、1100000の2の補数をとると 0100000(2進)→32(10進数)で答えを求められました。 そこでお聞きしたいのですが、値を足したとき(↑の例だと1100000)が求められたときにどういった条件だと1100000の2の補数をとる必要があるのでしょうか? ↑の例だとXがどの条件のときでしょうか? 質問が長くなってしまいましたがよろしくお願いします。

  • 【初心者から質問】 2進数の減算について

    学校で「アセンブラ言語」について学び始めました。 「2進数の減算」が分かりません。 ・減算は負の数の加算でおこなう。 ・負の数は2の補数であらわす。 ・補数を導き出すには「ビット反転」と「+1」する。 この3つのルールのことは何となくわかります。 では、  0110 1001 -0010 1100  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  の計算の仕方を教えていただきたいです。   0110 1001 -0010 1100  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄   1101 0011  (ビット反転) +1101 0100  (+1する)  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄  自分でやってみましたが、この先がわかりません。 (つまり負の数を加算する部分が分からないです) この先の答えと、計算方法を教えてください。 よろしくおねがいします。

  • 排他的論理和の問題

    以下の問題の回答を読んでも意味がわかりません。どなたか、もっと詳しく説明お願いします。 【問】 任意の8ビットのデータXと、8ビットのデータ00001111をビット毎に排他的論理和をとった結果はどれか。ここで、各1ビットのデータAとデータBの排他的論理和をとったCの値は次のように表される。また、データの左方を上位、右方を下位と呼ぶ。 A B C ‐‐‐‐‐‐‐‐ 0 0 0 0 1 1 1 0 1 1 1 0 【選択肢】 ア、Xの上位4ビットすべての0、1が反転し、下位4ビットは全て1になる。 イ、Xの上位4ビットすべての0、1が反転し、下位4ビットはそのまま残る。 ウ、Xの上位4ビットはすべて0で、下位4ビットすべての0、1が反転する。 エ、Xの上位4ビットはそのままで、下位4ビットすべての0、1が反転する。 【解】 エ 【解説】 問題文中の表からもわかるように、データBのある1桁の値が0だった場合、データAの値はそのままです。一方で、データBのある1桁の値が1であると、データAの値は必ず反転します。データBのビット列は、00001111ですから、データAの上位4ビットはそのまま、下位4ビットは全て反転すると考えられます。 解説の「~データAの値は必ず反転します」までは理解できるのですが、なんでいきなりデータBのビット列が00001111なのか意味が分かりません。これは表から読み取るもの?それともこの問題でデータBがデータXということを示しているのでしょうか。 情報系素人なもので、助言よろしくお願い致します!

  • 2に補数

    10進数から2進数を2の補数にする時はビット反転して1を足すとできますが、2進数から10進数を2の補数にするときも同じくビット反転して1を足すと正解の答えが出るのですが、そのやり方でいいのでしょうか?

  • どなたか、この問題を解いて教えてください。。

    基本情報技術者試験の勉強中なのですが、この例題が、解説を読んでもわかりません。項目は論理演算です。どなたか、教えていただけないでしょうか? 【問題】 8ビットのデータの下位2ビットを変化させずに、上位6ビットのすべてを反転させる論理演算はどれか? ア 16進数03と排他的論理和をとる イ 16進数03と論理和をとる ウ 16進数FCと排他的論理和をとる エ 16進数FCと論理和をとる 【答え:ウ】 【解説】16進数FCは11111100です。排他的論理和を取ると、上位6ビットは反転され、下位2ビットはそのままとりだせます。 と、書いてあります。2進数に変換するまではわかるのですが、排他的論理和を取るというのは、どういうことなのでしょうか? すみませんが、宜しくお願いします。