• ベストアンサー

2進法と10進法の演算問題

2進数→10進数(負の数)<2の補数表現> 8bit(8桁)の一番左のbitは符号bitとする 1)11111111 2)10011100 3)1.0010000 4)1.1100001 上記の問題が分かりません。 4桁ずつに分けて10進法に直して考えればよいのでしょうか? 補数表現自体よく分からないです。

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

  • ベストアンサー
回答No.3

1)2)の場合は、普通の正の2進数だと思って10進数に直した数から 2^8=256 (その桁数で表せる最大値+1)を引いてください。 例えば、10011100 なら、 普通に10進数に直すと、128+16+8+4=156 2^8 を引くと 156-256=-100 です。 あるいは、1を引いて0と1を反転すれば絶対値が出てきます。 例えば、10011100 なら、 1を引いて 10011011 0と1を反転して 01100100 10進数になおすと 64+32+4=100。 よって、答えは -100 です。 3)4)は自信なしです。 上の方法なら、普通に10進数に直した数から2を引けばいいのではないでしょうか。 1.0010000 を普通に10進数に直すと 1+(1/8)=1.125 2を引くと 1.125-2=-0.875 また、下の方法なら 1.0010000 から 0.0000001を引いて 1.0001111 ビット反転させて 0.1110000 10進数になおすと (1/2)+(1/4)+(1/8)=0.875 よって、答えは -0.875 です。

その他の回答 (3)

  • ryuta_mo
  • ベストアンサー率30% (109/354)
回答No.4

1の補数とはすべてのビットの1と0を入れ替えたものです。 00110101だったら11001010です。 2の補数とは1の補数に1を足したものです 00110101だったら11001010に1を足して11001011です。 二進法で2の補数を扱う理由は加算するときに例外を設ける必要がなくなる、引き算を加算回路で行えるということです。 たとえば、5+(-3)という計算を二進法で行う場合-3を一番上のビットを符号として絶対値を残りのビットで表した場合 0101+1011になりますが、1011が負数なので引き算として計算しなければならなくなります。 2の補数を使った場合 0101+1101となり、普通に足し算をしても0010(桁あふれは切り捨て)となり、正しく計算することができます。 引き算の場合は足し算に置き換えて計算します。 5-3 → 5+(-3) 2の補数であらわされた数値を元に戻すのも同じ手順で行うことができます。 0と1を入れ替えて1を足せば-1倍されます。 2の補数を用いた少数表現についてはわからないので3,4についてはわかりません。

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.2

3と4は、問題書き間違えてないかな? 2進数で仮数表現使わないで小数点以下を表すとは思えないのですが・・・。

  • kirinoma
  • ベストアンサー率53% (288/542)
回答No.1

http://www.pursue.ne.jp/jouhousyo/sysad/sysad010.htm (http://www.pursue.ne.jp/jouhousyo/doc_jouhou.htm) http://www.jtw.zaq.ne.jp/kayakaya/new/kihon/h13sm/h13sm_02.htm (http://www.jtw.zaq.ne.jp/kayakaya/) これらのサイトが解き方を丁寧に解説してくれています.「情報処理技術者試験」「基本情報~」「シスアド~」などで検索するといろいろ情報基礎の解説が出てきます. 補数表現とは2進表現において負数を表すために,一番最上位のbitを正負の表現に使う表現です(1の補数表現). しかし,そのままだと 10進の0を表す2進表現が 00000000 と 11111111 の2通りになってしまうので, 0以下を負の方向に1ずらして表現します(2の補数表現). なので,1の補数表現で表される値の範囲は+127~-127(0が重複)ですが,2の補数表現では+127~-128となっています. http://www.jtw.zaq.ne.jp/kayakaya/new/kihon/text/fusu.htm

関連するQ&A