回答

✨ ベストアンサー ✨

これは、正確には「半精度浮動小数点数」というものです

まず、コンピュータは電気信号の0(off)と1(on)で処理が基本
だから2進数を使います
何桁分を何に使うかはプログラミングする人が選びます
自然数だけ、負の数が必要、小数が必要、文字(英字、漢字)が必要、
などによって0と1の桁数を決めながら割り当てます
実は、今回の問題は「簡単な小数が使いたい」という前提です
あまり深くは考えなくて大丈夫です
イメージしてからの方が、今後メモリなど応用がしやすいはずなので
書いておきます

問題に戻ります
16ビットの浮動小数点数は16桁の0と1です
問題文の1行目にあるように
符号部1桁、指数部5桁、仮数部10桁で表します
まず表したい数を、±1.で始まる数×2ⁿ の形にします

符号部は、(-1)ⁿ
つまり、n=0 なら1で正、n=1なら−1で負が表せます
指数部は、2ⁿ⁻¹⁵
つまり、2² を表したい場合は、n-15=2となるので、n=17です
仮数部は、1を引いた数、つまり小数部分
となります

りんご

丁寧に教えてくださり、ありがとうございます!!

なぜ指数部を求めるときに2ⁿ⁻¹⁵という式になるのかが分かりません…。理解力が足らず、申し訳ないです。詳しく教えていただけると嬉しいです。

Dylan🍔

どうしてなるのか?というより、
これが半精度浮動小数点数の定義なので、
そういうものだと理解するしかないんです
詳しくは、
半精度浮動小数点数のWikipediaのページでご確認を

例えば、%は「割合に100をかけたもの」ですが、
「なぜ100をかけるのですか?」と聞かれても
そういう定義だからです、としか言えないのと同じ感じです

n-15乗と定義したこと(ルールをきめたこと)で、
それに合わせて皆が同じように使えます
同じルールでプログラミングすることにより、表計算、ペイント、画像加工、ゲームなどのアプリが成り立っています
パソコンやスマホなどのハードウェア側と、
アプリなどのソフトウェア側が、
同じルールにならないと都合が悪いですよね

りんご

なるほど。もう決まっていることなんですね。追加の質問にも答えてくださり、本当にありがとうございました!!

この回答にコメントする
疑問は解決しましたか?