10進数を2進数に・・・

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
谷口

10進数を2進数に・・・

#1

投稿記事 by 谷口 » 18年前

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進数で表示しなさい

答えと解き方を教えて頂ければ幸いです
スレ違いということは承知しております、迷惑でしたら削除の方お願い致します

バグ

Re:10進数を2進数に・・・

#2

投稿記事 by バグ » 18年前

プログラム上ではなくて、10進数から2進数への変換はできますか?
それが分からないと、プログラムを書くことは出来ないと思います。

toyo

Re:10進数を2進数に・・・

#3

投稿記事 by toyo » 18年前

>スレ違いということは承知しております、迷惑でしたら削除の方お願い致します
ということはCで表示するとかじゃなくてただ変換するだけと言うことですね
迷惑でもないんですがここの規約に
---------------
http://dixq.net/board/board.html
・マルチポスト(複数の掲示板に同じ質問を書く事)は禁止です。
---------------
とあります
OKWave(教えてgoo)かこちらか、どちらかにしぼられた方がいいですよ

谷口

Re:10進数を2進数に・・・

#4

投稿記事 by 谷口 » 18年前

>toyoさん
失礼しました、教えてgooの方は解決という形で、こちらの掲示板に絞りたいと思います
よろしくお願いします

谷口

Re:10進数を2進数に・・・

#5

投稿記事 by 谷口 » 18年前

自分で解いてみているのですが

>問.10進数の-5.25を2進数で表示しなさい

マイナスなので、先頭は1

①-5.25=-0.01=(-0.1)2 ×2^1なので指数はー1だから
(-1)10=0001   これを反転し1110

②5.25の5は2で割っていって(101)
 0.25を2でかけて(01)

それを合わして(10101)

答えは
1 1110 10101000000

////////////////////////////////////////////////////////////////////////////
>問.10進数の-0.125を2進数で表示しなさい
-0.125なので先頭は1

①-0.125=-0.001=(-0.1)2 × 2^2
(-2)10=0010   これを反転し1101

②0.125を2でかけてやって001

答えは
1 1101 00100000000

でいいのでしょうか?またー0.125ではなく0.125の場合は先頭の1をとって
0 1101 00100000000という形に変えるだけでいいのでしょうか?

YuO

Re:10進数を2進数に・・・

#6

投稿記事 by YuO » 18年前

・途中式の数式が明らかに間違っている
>-5.25=-0.01=(-0.1)2 ×2^1
っていったい何ですか?
・2の補数の扱いが間違っている
反転するだけの物は1の補数と言います。

ヒントを書くなら,-5.25については,
-5.25 = -1 * 5.25 = -1 * 0.65625 * 8 = -1 * 0.65625 * 23
と考えて処理します。

谷口

Re:10進数を2進数に・・・

#7

投稿記事 by 谷口 » 18年前

解説書に
-0.0625の場合は
(-0.0625)10=(-0.0001)2=(0.1)2 × 2^-3
と書いてありましたので、それに応じてー5.25もそのようにしてみるとこのような結果になりました

ヒントの0.65625はどこから出てきたのでしょうか?

何卒、よろしくお願いします

谷口

Re:10進数を2進数に・・・

#8

投稿記事 by 谷口 » 18年前

上の自分の記事は、独学でやってみると理解できました

それを踏まえて、やってみましたが
1番目の問題(-5.25)は→1 0011 10101000000

2番目の問題(-0.125)は→1 1110 10000000000

となりました、合っていますでしょうか?

また、-5.25ではなく5.25の場合は先頭の1を0に変えるだけでよろしいのでしょうか

YuO

Re:10進数を2進数に・・・

#9

投稿記事 by YuO » 18年前

> -0.0625の場合は
> (-0.0625)10=(-0.0001)2=(0.1)2 × 2^-3
> と書いてありましたので、それに応じてー5.25もそのようにしてみるとこのような結果になりました

その解説書はほぼ正しいですが (最後の部分にマイナス記号がないので,後の等号が成り立たない) ,あなたはそれを全くもって理解できていませんね。
その式は,間違っている部分に修正を加えると,
「-0.0625を2進数で表現すると-0.0001だから,(2進数の-0.1)かける(10進数の2)の(10進数の-3)乗である」
という意味です。

> ヒントの0.65625はどこから出てきたのでしょうか?
5.25を8で割った (= 8分の1をかけた) 値です。
浮動小数点数の表現(-1)S*M*2Eで正規化された形にするために,5.25に乗ずると範囲[0.5, 1)の値になるような,2の整数乗の値を使っています。

とりあえずは,-5.25や-0.125を2進数で普通に表してみることから始める必要があるのかも。
# 浮動小数点数でやるには知識不足だと思う。

谷口

Re:10進数を2進数に・・・

#10

投稿記事 by 谷口 » 18年前

返信ありがとうございます

といいますと

1番目の問題(-5.25)は→1 0011 10101000000

2番目の問題(-0.125)は→1 1110 10000000000

の答えで間違っているということでしょうか?

YuO

Re:10進数を2進数に・・・

#11

投稿記事 by YuO » 18年前

> 1番目の問題(-5.25)は→1 0011 10101000000
> 2番目の問題(-0.125)は→1 1110 10000000000
> の答えで間違っているということでしょうか?

質問と回答が入れ違いになってしまったようですね。
どちらも答えは正しいです。

閉鎖

“C言語何でも質問掲示板” へ戻る