• 締切済み

10進数を2進数に

10進数を2進数に変換する問題なのですが、 まったくもって理解ができません、教えて頂ければ幸いです S(符号)は1ビットで仮数の符号を表す E(指数部)は4ビットで指数を表し負数は2の補数で表現 M(仮数部)は11ビットで仮数の絶対値を表す 基数は2とする 仮数の0,2進数の少数以下第一位が1になるように、正規化された形で表す 小数点はEとMの位置にする 0の表現はー0と+0の二通りがあり特別に指数部と仮数部をすべて0にする 問.10進数の-5.25を2進数で表示しなさい 問.10進数の-0.125を2進数で表示しなさい 答えと解き方を教えて頂ければ幸いです

みんなの回答

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.7

#6です。 すみません。 doubleを自分で組み立てることを想定していましたが、それができるぐらいなら、この程度は自力でできますね。 失礼しました。

  • jacta
  • ベストアンサー率26% (845/3158)
回答No.6

そのまま答えを書いてしまうのは問題がありますので、ヒントとして浮動小数点数の10進数と16進数の間の変換方法だけ書きます。 double x; char s[100]; char *endptr; sprintf(s, "%a", -5.25); // 16進数に変換 x = strtod(s, &endptr);  // 10進数に変換 > まったくもって理解ができません まったくもって理解できない人は、せめて標準関数の使い方だけでも覚えましょう。

noname#50176
noname#50176
回答No.5

すみません。#3です。 0.125>0.25>0.5>1.0 で -0.0001>-0.1*2^-3 ですから S=1 E=1101 M=10000000000 の間違いでした。 でも#2さんがたぶん正解ですね。

  • Interest
  • ベストアンサー率31% (207/659)
回答No.4

http://okwave.jp/qa3055018.html の質問は解決しましたか?

noname#50176
noname#50176
回答No.3

>-0.125 > S=1 E=1110 M=0.10000000000 ・・・ #2さん 0.125>0.25>0.5>1.0 で -0.0001>-0.1*2^3 ですから S=1 E=0010 M=10000000000 ではないでしょうか・・? 私が間違っているのかもしれませんが・・。

  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.2

まず、単純な10進数→2進数の変換はできますか? 指数部、仮数部というものの意味はご存知ですか? とりあえず答えだけ -5.25  S=1 E=0011 M=0.10101000000 -0.125  S=1 E=1110 M=0.10000000000

  • ymmasayan
  • ベストアンサー率30% (2593/8599)
回答No.1

ヒントだけ書きましょう。 これは2進数と言うより2進表示の浮動小数点数です。 S=1ビット、E=4ビット、M=11ビットを羅列して16ビットで数を表します。 数=符号(Sにより+,-選択)×M/(2^11)×2^(E:正負あり) です。+0,-0の特例は省略。 まずこれを充分納得してから問題を解いてください。

関連するQ&A

  • 10進数を2進数にする問題について教えてください

    10進数を2進数にする問題について 10進数を2進数に変換について 10進数を2進数に変換する問題なのですが、 まったくもって理解ができません、教えて頂ければ幸いです S(符号)は1ビットで仮数の符号を表す E(指数部)は4ビットで指数を表し負数は2の補数で表現 M(仮数部)は11ビットで仮数の絶対値を表す 基数は2とする 仮数の0,2進数の少数以下第一位が1になるように、正規化された形で表す 小数点はEとMの位置にする 0の表現はー0と+0の二通りがあり特別に指数部と仮数部をすべて0にする 問.10進数の5.25を2進数で表示しなさい 問.10進数の0.125を2進数で表示しなさい 答えと解き方を教えて頂ければ幸いです

  • 浮動小数点の表現(基本情報)

    数値を16ビットの浮動小数点表示法で表現する。形式は図に示すとおりである。10進数0.375を正規化した表現はどれか。ここでの正規化は,仮数部の有効数字よりも上位の0がなくなるように指数部を調節する操作である。(H9 秋 問13) S(1ビット):仮数部の符号(正は0,負は1) E(4ビット):2のべき乗の指数部で,負数は2の補数 M(11ビット):仮数部の絶対値 【参考にしたサイト】 http://www.jtw.zaq.ne.jp/kayakaya/new/kihon/text/fudo.htm 【質問】 Eは、負数は2の補数とありますが、Eの先頭1ビットは符号を表すのでしょうか? 手持ちの参考書にも同じような説明があったのですが、先頭が符号なのか分かりませんでした。IEEE754では、指数にE-127を使っているので、非負、負の表現は出来る事は分かりました。しかし、上記の場合は、非負、負の判断はEにも符号ビットがないと出来ないように思い質問しました。回答宜しくお願い致します。

  • 数値を浮動小数点表示

    基本情報技術者の勉強を始めたのですが、 浮動小数点の問題で分からないものがありました。 問題は、 ・基数は2。 ・数値を24ビットで表現。 ・左から1ビットは仮数の符号を表す。 (0なら正、1なら負) ・左から数えて2ビット目から8ビット目までで 2のべき乗を表す。(負数は2の補数で表す) ・右16ビットは仮数の絶対値を表す。 (あと、左から数えて8ビット目と9ビット目の間が 小数点位置、だという表示があります。) 以上のように24ビットの浮動小数点表示で、最大数を 16進数で表したものはどれか? この問題の答えは3FFFFFとなっているのですが、 どうしてこのような解答になるのでしょうか? ヒントには「指数部は負数を2の補数で表すので、左から 2ビット目も0でなければならない」とあるのですが、 わけわからない状態です。 簡単で結構ですので、教えていただけないでしょうか。 よろしくお願いします。

  • 記数法(n進数)

    ① −(2D)16 を符号付絶対値 8 ビットで表す ② −(146)8 を「負数は 2 の補数で表現する」8 ビットで表す ③ 符号付絶対値 8 ビット (10110101)2 を 10 進数で表す ④「負数は 1 の補数で表現する」 8 ビット (01011001)2 を 8 進数で表す ⑤「負数は 2 の補数で表現する」 8 ビット (10111011)2 を 16 進数で表す ()の後の数字は小文字です。 n進数からm進数への変換と計算はできるようになったのですが、ビットの表現などが分からないので教えて頂きたいです。

  • 浮動小数点数について

    現在情報処理の勉強をしているのですが、下記の問題が解けません。。 もし、わかりすく教えてもらえれば,,,と思い、、、 ↓ 数値を16ビットの浮動小数点数で表現する。10進数0.375を正規化した表現を、2進数であらわすとどうなるか求めよ。ここでの正規化は仮数部の有効数字よりも上位の0がなくなるように指数部を調整する操作である。 仮数部の符号(正は0 負は1)(1ビット) 奇数を2とする指数部で、負数は2の補数(4ビット) 仮数の絶対値(11ビット) で、 答えは 0111 1110 0000 0000 なのですが、この指数部がどうしてもわかりません。 初心者なので、、わかりやすく教えてくだされば、、うれしいな。と思うのです。

  • 浮動小数点形式の問題

    数値を32ビット浮動小数点形式で表す。指数部は2を基数とし、負数は2の補数で表現する。10進数0.375をこの2を基数とした浮動小数点形式で正規化したものはどれか。ただし結果は16進数で表現する。 答え:7FC00000 という問題です。 まず0.375を2進数に 0.011 正規化 0.11 * 2^-1 指数部-1を2進数で求める -0000 0001 ->1111 1111 仮数部符号は正の数なので0 0111 1111 ???? ???? ???? ???? ???? ???? と・・・ ここの部分からわかりません・・・ (なぜか手持ちの参考書には省略してあり・・・) 7Fの部分はこれで間違いないでしょうか? またそのあとのC00000 はどうやって導くのか教えてください。 お願いいたします

  • 浮動小数点数

    再質問で畏れ入ります。 数値を32ビット浮動小数点形式で表す。指数部は2を基数とし、負数は2の補数で表現する。10進数0.375をこの2を基数とした浮動小数点形式で正規化したものはどれか。ただし結果は16進数で表現する。 答え:7FC00000 という問題です。 まず0.375を2進数に 0.011 正規化 0.11 * 2^-1 指数部-1を2進数で求める -0000 0001 ->1111 1111 仮数部符号は正の数なので0 0111 1111 ???? ???? ???? ???? ???? ???? と・・・ ここの部分からわかりません・・・ (なぜか手持ちの参考書には省略してあり・・・) 7Fの部分はこれで間違いないでしょうか? またそのあとのC00000 はどうやって導くのか教えてください。 お願いいたします

  • 8ビットを2進数で表現すると…

    質問です。 符号付の整数を8ビットの2進数で表現するとき、00110111-11000001の演算結果はどのようになるのでしょうか? 符号ビットは左端にあり、負数は2の補数で表します。

  • 問:負数を2の補数で表現する符号付き16ビットの2進数を16進法で表示

    問:負数を2の補数で表現する符号付き16ビットの2進数を16進法で表示したもののうち、4倍するとあふれが生じるものはどれか。 ア 1FFF イ DFFF ウ E000 エ FFFF 以下は、それぞれを2進数表示にしたものです。 先頭の符号ビットは[0]の表記で目立たせてあります。 ア [0]001 1111 1111 1111 イ [1]101 1111 1111 1111 ウ [1]110 0000 0000 0000 エ [1]111 1111 1111 1111 以下は、4倍したもの ア [0]111 1111 1111 1100 イ [0]111 1111 1111 1100 ウ [1]011 0000 0000 0000 エ [1]111 1111 1111 1100 この場合は、ア以外は負数ですが、『負数を2の補数で表現する符号付き16ビットの2進数を、16進数で表現した場合』は16進数が正の数でも、2進数だと負数になると言う事でしょうか? また、符号付きでない場合は、上記はすべて正の数と言う事で合ってますか? 回答を見る感じでは16進数を2進数に変換しただけで、『2の補数で表現』の部分がないように思えます。この辺りも知りたいです。 問題の解き方についても疑問があります。 http://questionbox.jp.msn.com/qa4278151.html での回答では、 イ DFFF →(シフト前)1101 1111 1111 1111 →(シフト後)0111 1111 1111 1100 先頭ビットが1から0に変わったので「桁あふれ」。 問題集の回答ではこっちで説明されていました。 http://okwave.jp/qa/q4302488.html のANo2回答では (シフト前)[1]101 1111 1111 1111 (シフト後)[1]111 1111 1111 1100 2の補数表現による負の数の場合,シフト操作によって1が消えていくのは問題ない。 シフト操作によって0が消えると結果が変になる。これが「あふれ」 符号はシフトさせず、左に2つシフトさせた事で、10が消えた事で桁あふれとしています。 ANo1の回答では、 DFFFだと同様に 1101 1111 1111 1111で1の補数は 0010 0000 0000 0000 2の補数は 0010 0000 0000 0001 つまり、-8193ですよね。 4倍すると、-32772で、これは16ビットの2の補数表現 で表現できる数の範囲からあふれてしまいます。 DFFFなどの2進数に変換後、2の補数を使用するのが正しいのでしょうか? 最初の2つの回答では2の補数を使用していなかったので、疑問に思っています。 頭が混乱しております・・・。 回答宜しくお願い致します。

  • 2の補数の問題

    お世話になります。 初歩的な質問で申し訳ございませんが、質問させてください。 ------------------------------------------------------------- 問:負数を2の補数で表現する符号付き16ビットの2進数を16進法で表示したもののうち、4倍するとあふれが生じるものはどれか。 ア 1FFF イ DFFF ウ E000 エ FFFF ------------------------------------------------------------- 答えはイなのですが、イマイチです。 とある解説だと、4倍すると符号が変わるものがあふれとのことでした。 DFFF →(2の補数)0010 0000 0000 0001 →(4倍する)1000 0000 0000 0100 確かに符号が変わることは分かるのですが、ウでも E000 →(2の補数)0010 0000 0000 0000 →(4倍する)1000 0000 0000 0000 こちらも符号が変わることにはならないのでしょうか? どうぞよろしくお願いいたします。

専門家に質問してみよう