浮動小数点数とは何かや正規化のメリットをわかりやすく解説【情報I基礎】2-1-7 実数のデジタル表現

Поделиться
HTML-код
  • Опубликовано: 3 дек 2024

Комментарии • 59

  • @あか-p4z8p
    @あか-p4z8p 5 месяцев назад +1

    いつも動画投稿ありがとうございます!分からないときに参考にさせてもらっています!
    指数部について質問です。負の指数を表現するために1023を足すと説明されていましたが、それなら普通に2の補数を使って表現すればいいんじゃないかなと思ってしまいました…
    今回はなぜ2の補数を使わずにわざわざ1023を足すという操作をしなければならないんでしょうか?ちょっとめんどくさいところが気になってしまいまして…
    分かればお答えしていただけると嬉しいです!

    • @SekaChan
      @SekaChan  5 месяцев назад +2

      鋭くて良い質問ですね!
      (自分が先生だったら、こういう質問をされると嬉しくなっちゃいます😄)
      たしかに、2の補数を使ってもマイナスの値を表現することはできます。
      ただ、(例えば8ビットの)2の補数を使うと‥
      ・-128~-1 → 1000 0000~1111 1111
      ・0~127 → 0000 0000~0111 1111
      となります。
      一方、浮動小数点数の指数部のように+127という方法を使うと‥
      ・-126~127 → 0000 0001~1111 1110
      となって、【2進数の値が大きくなるほど指数部の値も大きくなります】。
      ※指数部がすべて0or1の場合は特殊な値(無限大など)を表します
      なので、指数部同士の大小比較や正規化(ちょっとした加減算)をする場合、後者のほうが簡単に処理できるわけですね。

  • @岡田浩平-j7w
    @岡田浩平-j7w 2 года назад +26

    ありがとうございます。浮動小数点は参考書見るだけでアレルギー反応が出ていましたが、板書がきれいで、説明もわかりやすく大変助かりました。

    • @SekaChan
      @SekaChan  2 года назад +3

      岡田浩平さん、コメントありがとうございました!
      浮動小数点数は複雑なので、アレルギー反応が出ちゃうのはよく分かりますよ💦
      でも、この動画が役に立ったみたいで良かったです!

  • @東少年
    @東少年 2 года назад +12

    明日情報のテストで、 固定少数点数で2進数や10進数に変換することとかまじでわからなかったんですが、いい説明ありがとうございます😊
    頑張ってきます!!

    • @SekaChan
      @SekaChan  2 года назад +4

      【ん】さん、コメントありがとうございました!
      2進数や10進数の変換はかなり難しいですよね。ここが分かればきっと良い点数を狙えますよ👍
      今日のテスト、頑張ってきてください!!

  • @ayano3876
    @ayano3876 23 дня назад +2

    凄くわかりやすいです!!ありがとうございます🙇‍♂️
    もし宜しければ10進数の6.75を2進数の浮動小数点数で表すという問題を教えて欲しいです…!!

  • @kinopio3692
    @kinopio3692 5 месяцев назад +1

    わかりやすいです。ありがとうございました

    • @SekaChan
      @SekaChan  5 месяцев назад

      こちらこそ、コメントありがとうございました!

  • @mondai40
    @mondai40 Год назад +6

    いつもお世話になっております。
    浮動小数点数の指数部について質問があります。
    他の方の質問に対する解説を見ました。
    ---以下引用---
    例えば32ビットの浮動小数点数で考えると、
    ①指数部に127を足さない場合
    → 指数部で表現できる値は 1~254 → 浮動小数点数として表現できる値は ●×2^0~●×2^255
    ②指数部に127を足すと決めておく場合
    → 指数部で表現できる値は -126~127 → 浮動小数点数として表現できる値は ●×2^(-126)~●×2^127
    ---以下おわり---
    ①については理解できます。
    ②がやはりピンと来ず。。なぜ127を足すとマイナスを表現できるのか
    例えば、2^3のとき、127を足すと2^130になってしまう気がしてなりません。

    • @SekaChan
      @SekaChan  Год назад +2

      mondai40さん、コメントありがとうございました。
      僕の説明の仕方が分かりにくかったですね。すみません🙏
      「指数部に127を足すと決めておく」というのは、
       (実際の小数データの指数)+ 127 =(小数データを浮動小数点数で表したときの指数部の値)
      という意味合いです。
      つまり、
       (実際の小数データの指数)=(小数データを浮動小数点数で表したときの指数部の値)- 127
      となるので、mondai40さんの認識とは逆ということになりますね。

  • @hirohisakai97
    @hirohisakai97 2 месяца назад

    8:36  指数部は、 10(2)+01111111111(2)=
    100000000001(2)と11ビットで表現されるのですね。

  • @はたま-d4p
    @はたま-d4p 4 месяца назад +1

    動画ありがとうございます!とても分かりやすいです!!受験生なのですが夏休みに入って情報を勉強し始めてすごく頼りになります!!
    一つ質問なのですが、指数部の127や1023はどこからくるのですか??
    2の8乗ならば128を使うと思いました💦説明お願いします🙇🏻‍♀️

    • @SekaChan
      @SekaChan  4 месяца назад +1

      今年の受験生は新課程入試でいろいろ大変だと思います。
      ただ情報に関しては、せかチャンさえ見てれば共テ8~9割超えられる講座を作っていくのでみんなで頑張っていきましょう!
      前にuser-es4mp6qv8rさんからも同じような質問を受けて回答済なので、そちらを参考にしてみてください😄

  • @jloc6tmk
    @jloc6tmk 5 месяцев назад +2

    ありがとうございます。これ難しいですね。これ共通テストに出そうでしょうか?

    • @SekaChan
      @SekaChan  5 месяцев назад +2

      そうですね。ここは情報Ⅰ全体の中でも難易度高めです。
      これまでの私大入試で出てるので、共通テストでも出題される可能性がありますね。

    • @jloc6tmk
      @jloc6tmk 5 месяцев назад +2

      @@SekaChanありがとうございます。きちんと理解しておきます。

  • @かめっち-x8c
    @かめっち-x8c 11 месяцев назад +1

    分かりやすい動画ありがとうございます!
    浮動小数点数のところで2進数の例が出ていましたが、2進数の場合も10進数の場合と同じように指数が1大きくなったら小数点が1左に行く、指数が1小さくなったら小数点が1右に行くという考え方で良いんでしょうか?

    • @SekaChan
      @SekaChan  11 месяцев назад

      かめっちさん、コメントありがとうございました!
      2進数の場合もその考え方で大丈夫ですよ。
      こちらの動画も参考にしてもらうと理解が深まると思います😄
      ruclips.net/video/7LPNodBBtqI/видео.html

  • @Mamao-us1hs
    @Mamao-us1hs Год назад +1

    浮動小数を正規化する時に指数部の値はどのようにして定めているのしょうか?そこ以外は理解できたのですがどうしてもそこだけが分かりません

    • @SekaChan
      @SekaChan  Год назад +1

      Mamaoさん、コメントありがとうございました!
      浮動小数点数を正規化するときは、まず小数を 6:08 で☆をつけた「1.~」の形にします。
      このときの指数の値に、64ビット浮動小数点数の場合は1023(or32ビット浮動小数点数の場合は127)を足して2進数に変換すると指数部の値を求めることができますね。

  • @MnnbTngk
    @MnnbTngk 7 месяцев назад +1

    俺が文系人間だから7:40辺りからまったく理解できないのかなと思ってたけどやっぱり難しい範囲なんですね。
    7:40までは分かりやすい説明のおかげでかなり理解が深まったのですがそこからが全く頭に入ってこなくなってしまいました。

    • @SekaChan
      @SekaChan  7 месяцев назад +1

      ここ、改めて見直すと説明が早すぎたなーって感じます。すみません🙏
      仮数部の「1.0101」はホワイトボード左下の2進数からきていることをもっと強調しておくべきでしたね…
      7:40までわかったのであれば正規化の考え方は理解できているので、ゆっくりめの速度で何度か見返してみてもらうと7:40以降も頭に入るかなと思います。

  • @ししゃも-q3e
    @ししゃも-q3e 3 дня назад

    ただ一桁分データ省略出来るから楽ってだけなのですか?

  • @なる-p7y
    @なる-p7y 2 года назад +4

    コメント失礼します。
    質問なのですが、私の学校の教科書では、16ビットで説明が書いてあったのですが、16ビットですと指数部に足す数字は何になるにでしょうか…

    • @SekaChan
      @SekaChan  2 года назад +5

      智愛 福田さん、コメントありがとうございました!
      16ビットの場合、指数部に足す数字は「15」ですね。
      (他の視聴者さんにも参考になるように、理由を細かく書いておきます)
      まず、浮動小数点数のルール(指数部や仮数部の桁数など)は、IEEE(アイトリプルイー:Institute of Electrical and Electronics Engineers)という団体が決めたものです。
      (ここから、8:43以降の話の流れに沿って説明します)
      IEEEのルールによると、16ビットの浮動小数点数は
       符号部:1ビット、指数部:5ビット、仮数部:10ビット
      の形式で値を表現します。
      指数部が5ビットの場合、指数部で表現できる値は「0(00000)~31(11111)」です。
      ただ、「マイナス何乗」の値も表現できるように、指数部に入る値は「+15」したものだと決められているんですね。
      すると、指数部で表現できる値は「-15(00000)~16(11111)」となります。
      ※ものすごく厳密にいうと、(9:14の※で書いている通り)指数部がすべて0とすべて1の場合は特殊な値を表現するため、指数部で本当に表現できる値は「-14~15」です。ただ、教科書でもここまで細かくは触れられていないため、最後の補足は読み流してくれて大丈夫です😄

    • @なる-p7y
      @なる-p7y 2 года назад +4

      返答ありがとうございます😭
      わかりやすくてとても助かりました。明日試験なのでこの解き方で頑張ってみますっっっ

    • @SekaChan
      @SekaChan  2 года назад +3

      @@なる-p7y さん、返信ありがとうございました!
      今日試験なんですね。わざわざ動画を観て頑張っているなるさんなら、きっとうまくいきますよ👍
      今までの頑張りを出し切ってきてください!!

    • @さんかめはめ
      @さんかめはめ Год назад

      @@SekaChan横から申し訳ないです。
      +15するのに、なぜ指数部が−15になるのでしょうか??

    • @そのとーりでち
      @そのとーりでち Год назад +1

      表現出来る指数は-15乗までであって指数部は0表記よ

  • @nanamiokada164
    @nanamiokada164 2 года назад +3

    32bitや64bitの浮動小数点において指数部と仮数部のbit数はどのように決まっているのでしょうか?

    • @SekaChan
      @SekaChan  2 года назад +3

      nanami okadaさん、コメントありがとうございました!
      おそらく、浮動小数点の32bitや64bitの数字は(誰が)どのようにして決めたのか?という意味合いですよね。
      とても良い質問だと思います!(質問の解釈が間違ってたらごめんなさい🙏)
      浮動小数点のルール(bit数や桁の使い方など)は、アメリカのIEEE(アイトリプルイー:Institute of Electrical and Electronics Engineers)という団体が決めたものです。
      (Wikipedia:ja.wikipedia.org/wiki/IEEE )
      IEEEはアメリカにある電気電子学会で、電気通信や情報関連分野のいろんなルールを制定しています。
      浮動小数点のルールは「IEEE 754」という形でまとめられていて、このルールに従って32bitや64bitに対応したCPU製品が作られたり、プログラムが動いていたりします😄

  • @我の名は-m2j
    @我の名は-m2j 8 месяцев назад +2

    4:06 で6の後に0が23個続くと仰っていますが、元は60000....2という数字ということですか? 元が60200000....という数字なら理解ができるのですが、、、

    • @SekaChan
      @SekaChan  7 месяцев назад +1

      たしかに、6.02×10^23 は 602000000‥0 ですね。
      4:06では「6の後に0が23個続くくらいの大きな数」と話しましたが、ここでは「それくらい桁数が大きい数」というイメージをもってもらえたら嬉しいです🙏

  • @fgh6014
    @fgh6014 9 дней назад +1

    IEEE754でバイアスを+127にする理由ってなぜなんでしょうか?補数のように+128にして-128から+127まで指数部で使われるようにした方がいい気がするんですけど・・・

    • @SekaChan
      @SekaChan  8 дней назад

      前に同じ質問コメントをもらって回答しました。
      そのコメントをトップに固定したので、そちらを見てみてください!

    • @fgh6014
      @fgh6014 8 дней назад +1

      ありがとうございます。
      ただ質問の意図は少し違っていて、-127~126では無い理由の方です。
      補数表現のように、マイナス側をひとつ多く取った方がルール的に分かりやすいんじゃないかな?という疑問を持っています。
      これだとバイアスを128=2^7とも表現出来るので、綺麗なのになと感じました。
      明確な理由とかはあるのでしょうか?

    • @SekaChan
      @SekaChan  8 дней назад +1

      質問を勘違いしちゃってすみません。
      なるほどですね。たしかに128のほうが綺麗な数字だし、ルール的に理解しやすいのはわかります。
      (これはIEEEのドキュメント等を確認したわけではなく僕の個人的な解釈ですが)+127にするのは「-127乗より127乗を表現したいため」なのかなと思います。
      1桁ではありますが、細かい誤差をなくすより大きな数を表現することを優先したのかと。

  • @ととと-x3i
    @ととと-x3i 6 месяцев назад +1

    こんにちわ!0と1で表すときの指数部分なのですが、マイナスを表現するために初めの3桁分を確保している認識で合っていますでしょうか。。

    • @SekaChan
      @SekaChan  6 месяцев назад

      こんにちは!
      せっかくコメントしてくれたので質問に答えたいんですが、【初めの3桁分】が何のことか分かりませんでした‥
      7:36で説明してるように、指数部は1桁ですね。

  • @dpggdpdpwpa
    @dpggdpdpwpa 4 месяца назад +1

    他の参考書で勉強していたときに8ビットで表すことのできる整数の範囲は-128〜127と習いました。しかし、ここの指数部では-127〜128を表すのはどうしてですか?

    • @SekaChan
      @SekaChan  4 месяца назад +1

      その「8ビットで表す整数の範囲」は、きっと補数を使うときの話じゃないかなと思います。
      指数部の範囲が変わるのは、浮動小数点数の指数部では他の方法(127を足す)を使って値を表現するためですね。
      どうして表現方法が違うのか?については、他のコメントで回答してるのでそちらを参考にしてください😄

  • @zephone2047
    @zephone2047 Год назад +4

    専門学校で聞くのよりわかりやすい

    • @SekaChan
      @SekaChan  Год назад

      DAlKONさん、コメントありがとうございました!
      ここは難しいところなので、わかりやすいって感じてもらえて良かったです😄

  • @よっしー-f1p
    @よっしー-f1p 3 месяца назад +1

    浮動小数点数って共通テストレベルで出題されるのでしょうか💦

    • @SekaChan
      @SekaChan  3 месяца назад

      共通テストで出題される可能性はありますね。
      どんなふうに出題されるかは、共通テスト対策講座の動画も参考にしてみてください😄

  • @もーちゃんは健康になりたい

    こんにちは。情報の学習を0から始めた教育学部の者です。無知な質問で申し訳ないのですが、指数部に追加で数字を足したのは何故なのでしょうか。基本情報技術者の参考書には記述がなかったので戸惑っています(^_^;)どうかよろしくお願いします。

    • @SekaChan
      @SekaChan  Год назад +1

      シティーハンターになりたい大学生さん、コメントありがとうございました!
      たしかに、そこは最初僕も疑問に思いましたね。
      指数部に数字を足す理由は 8:47 あたりから解説しているのでもう一度見てみてください😄

    • @もーちゃんは健康になりたい
      @もーちゃんは健康になりたい Год назад +1

      返信ありがとうございます。
      それでも分からないのでほかを当たります。

    • @SekaChan
      @SekaChan  Год назад +4

      @@もーちゃんは健康になりたい さん、返信ありがとうございました。
      解説部分は見てくれていたんですね。失礼しました。
      動画内では、指数部に数字を追加するのは「マイナスの指数を表現するため」と話しました。
      言い換えると、「より細かい(絶対値の小さい)値を表現するため」ともいえます。
      例えば32ビットの浮動小数点数で考えると、
      ①指数部に127を足さない場合
      → 指数部で表現できる値は 1~254 → 浮動小数点数として表現できる値は ●×2^0~●×2^255
      ②指数部に127を足すと決めておく場合
      → 指数部で表現できる値は -126~127 → 浮動小数点数として表現できる値は ●×2^(-126)~●×2^127
      ※2^255は「2の255乗」の意味
      マイナスの指数を表現できると、0.000‥‥01の「0」がより多い値を表現できます。
      より細かい数字を表現できると計算時の誤差を小さくすることにもつながるため、②のようなルールが定められています。

  • @宇佐見英晴
    @宇佐見英晴 2 года назад +1

    浮動小数点数の仮数についてですが、2進数では小数点のすぐ左が1になるようにするというのは、そのとおりだと思いますが、1が最上位数との説明だったと思います。私は、小数点のすぐ左の数が、数を左の方から右を見て行って0以外の最初の数と理解していたのですがどうなのでしょうか?もちろん2進数では同じことになるのですが、例えば10進数で数が0.0201だとしたら2.01×10^-2として2.01が仮数となって、-2は指数になるのではないでしょうか?浮動小数点数は小数点は動きますが、仮数と指数は固定されるというややこしい関係になっているのではないでしょうか?固定しないと無数に書き方が存在することになります。

    • @SekaChan
      @SekaChan  2 года назад

      宇佐見英晴さん、コメントありがとうございました。
      いただいたコメントを何回か繰り返して読ませてもらいました。たしかに
      「小数点のすぐ左の数が、数を左の方から右を見て行って0以外の最初の数と理解していた」
      は僕も同じ認識で、その後の2進数・10進数の説明もその通りだと思っています🍀
      僕の受け取り方が間違っていたらすみませんが、動画内の説明の仕方(小数点のすぐ左が1になるようにする)だと2進数に限定した話になってしまうのではないかというご指摘で合っているでしょうか?
      また、浮動小数点数は表現方法が無数に存在しますが、コンピュータ内では書き方が固定されているややこしい関係だと思います。
      (リアルでは状況に応じていろいろな書き方が使われるケースがあります)

    • @宇佐見英晴
      @宇佐見英晴 2 года назад +1

      せかチャン様。ご回答ありがとうございます。2進数では0でなければ1ですが、10進数では1とは限らないという重箱の隅をつつくコメントでした。アボガドロ数の説明で普通の人はわかると思います。疑問はまだありまして、(1)1が小数点の左にあるようにすると、浮動小数点数では0を表せられないのでは?仮数が0.0000...のとき、数値は0と定義すれば0を表せられる気がします。(2)仮数部は、小数点の左側の1を無視して小数点の右側だけを表すと教科書では書いてあること。(3)数値の内部表現というのはCPUやメモリでの表現で、ファイルなどでは違うのか、ということです。

    • @SekaChan
      @SekaChan  2 года назад

      宇佐見英晴さん、返信ありがとうございました。
      「重箱の隅をつつくコメント」とありましたが、わざわざ指摘してもらえて嬉しかったです。
      分かりやすい動画づくりを目指していますが、その前に正確さが不可欠ですから😄
      細かい表現から気をつけていかなくちゃと改めて思いました。ありがとうございました!
      また、疑問(1)(2)はその通りで、僕もどう伝えれば良いのかなと思案しているところです。
      教科書には「最上位の桁は常に1になるので、1を省略して2番目の桁から仮数部とする」と断言されていますが、実際には指数部がすべて0の「0」や、すべて1の「無限大」などの表現もあったりしますから。
      教科書を超える内容を伝えすぎると余計に高校生を混乱させてしまう可能性もあるので、どこまで細かい情報を伝えるべきかは検討を続けていきたいと思います。
      (3)の数値の内部表現については、(質問の意図を正確に把握できているか分かりませんが)ファイルによって表現方法は変わります。
      そのため、すべてのファイルが浮動小数点数で数値を表現しているわけではなく、他の表現方法も使われていますね。

  • @ni.co.mal.e
    @ni.co.mal.e День назад

    これを中学校でやらせてくる先生はどう思いますかね…泣

  • @mirai0723
    @mirai0723 5 месяцев назад +1

    無理かもしれない…明日テストですが全然わからなくていろんな参考動画見漁ってます…でもなんだかよくわからない(´;ω;`)頑張ります_(┐「ε:)_

    • @SekaChan
      @SekaChan  5 месяцев назад +1

      ここは2章のなかでも特に難しいところなんですよね‥
      でも、テスト前日まで動画を見漁ってるなんてスゴイ!その頑張りが結果につながるように応援してますよ✊

  • @user-ln2jz8bx4u
    @user-ln2jz8bx4u 2 месяца назад

    わからない泣ける

    • @SekaChan
      @SekaChan  2 месяца назад

      力不足で申し訳ないです🙏
      できることならわからないところを直接教えたい‥