公式アカウントからの投稿が始まります

C言語で、0.0〜f〜1.0までの数字を入力し、それを
二進数に変換するプログラムを教えてほしいです。

A 回答 (7件)

>「誤解されそうな表現」を訂正しながらも勇み足っぽいので


確かに! 一本とられました(苦笑)

そもそもC言語では、近似値でしか扱かえませんよね。

そもそも「ほとんどの」C言語では、近似値でしか扱かえませんよね。

に読み替えてください。
    • good
    • 0

そもそも「0.0〜f〜1.0までの数字」ってなんだよ, って話があるような気がする. 「二進数に変換する」も「変換して, でそのあとどうするんだよ」が決まらないとどうにも.



余談.

「誤解されそうな表現」を訂正しながらも勇み足っぽいので #5 に突っ込んでおくと, 例えば 0.5 はほとんどの「C言語」で正確に扱えるし, なんなら 0.1 だって「近似値でしか扱えない」という決まりがあるわけじゃない (規格上「0.1 を正確に扱うことのできる処理系」を排除しているわけではない).
    • good
    • 0

>こういった整数でない数値は、2進数では表せません。


誤解されそうな表現なので訂正です。

数学的には、
 0.1 は 2進数では循環小数で表せますよ
また
 0.5は 2進数では 0.1
 0.25 は2進数では 0.01 で表せますよ

といっても、
 0.0〜f〜1.0までの数字は、
そもそもC言語では、近似値でしか扱かえませんよね。
    • good
    • 0

0.0〜1.0ということは、0.1とか0.9などですよね。


こういった整数でない数値は、2進数では表せません。
具体的には、0.1は2進数では表せません。
技術的には、近似値になりますが、浮動小数点方式が一般的です。
浮動小数点方式においても、単精度と倍制度などがありますが、いずれにせよ、有効桁数のある限定的な近似値です。これの中身(実体)をbit表示することはできますが、あまり意味のあることとは思えません。
    • good
    • 1
    • good
    • 0

仕様不良ですね。

整数ならともかく浮動小数点数の2進表現って一般的じゃないのでどのようなアウトプットを期待しているかもう少しきちんと記載してもらわないと。
# 逆に仕様をそこまで詳細化できるならコードを書くのは簡単か
    • good
    • 0

2倍して1.0を越したら1、越さなければ0を返す関数と


2倍して1.0を越したら1.0を引いた値を、越さなければ2倍した値返す関数
を作って組み合わせたらできるのでは?
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!