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

แชร์
ฝัง
  • เผยแพร่เมื่อ 24 ก.ค. 2024
  • 【高校情報I】2-1-7 実数のデジタル表現 の授業動画です。
    実数の表現方法である固定小数点数と浮動小数点数の違いや、浮動小数点数の正規化とは何かとその利点を基本から解説しました🎉
    《東京書籍「新編情報Ⅰ」説明なし、実教出版「最新情報Ⅰ」P80、数研出版「情報Ⅰ」P94、日本文教出版「情報Ⅰ」P127》
    ⭐楽しく無料でITを学ぼう!そんな想いで動画を作ってます😁
    →チャンネル登録/高評価/周りにシェア で応援お願いします✨✨
    🌸チャンネル登録はこちら!
    th-cam.com/users/SekaChan?su...
    👀関連サイト・動画はこちら!
    ▼授業ノートと完全攻略シート(PDF教材)
    sekachan.net/info1-basic/
    ▼前の動画
    • 2進数のかけ算と割り算に使われるシフト演算と...
    ▼次の動画
    • 4種の誤差を内容・発生理由・対策方法で整理し...
    ▼情報I総復習マインドマップ
    • 【この1本でOK】情報I全範囲をマインドマッ...
    ▼情報I基礎講座
    • 【共通テスト対策】高校情報1 基礎講座(全範囲)
    ▼情報I共通テスト対策講座
    • 【共通テスト対策】情報I 演習講座
    💡チャプター
    00:00 今回のテーマ
    00:41 固定小数点数
    03:45 浮動小数点数
    06:08 浮動小数点数の正規化
    06:58 浮動小数点数の表現方法
    09:34 確認問題
    10:33 まとめ
    🙋‍♂️プロフィール
    【せかチャン 菅原】
    ・東京工業大学大学院 情報理工学研究科 卒業
    ・大学生、大学院生のときに5年半塾講師
    ・IT研修講師として情報技術、プログラミングのセミナーを企画・実施
    ・Oracle社より「Instructor of the Year(満足度日本一)」「Java講師賞」を4年連続受賞
    「分かった!」と言ってもらえる瞬間、勉強を楽しいと感じてもらえる瞬間が好きです。
    フリーラーニング(無料で学べる場)を広げたいと思ってTH-camをはじめました。
    一緒に楽しく勉強&成長していきましょう!
    📳X(旧Twitter)
    x.com/SekaChanIT
    🎵音源提供
    DOVA-SYNDROME
    dova-s.jp/
    ※動画によっては使用していない場合があります
    #情報I #共通テスト #せかチャンの情報I基礎講座
    #情報科 #高校情報科 #基本情報技術者 #ITパスポート

ความคิดเห็น • 45

  • @user-ky4rt9gq8r
    @user-ky4rt9gq8r ปีที่แล้ว +19

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

    • @SekaChan
      @SekaChan  ปีที่แล้ว +3

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

  • @kinopio3692
    @kinopio3692 หลายเดือนก่อน +1

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

    • @SekaChan
      @SekaChan  หลายเดือนก่อน

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

  • @user-ws6ks5br1u
    @user-ws6ks5br1u ปีที่แล้ว +10

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

    • @SekaChan
      @SekaChan  ปีที่แล้ว +4

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

  • @user-mx5gf8ei7w
    @user-mx5gf8ei7w 6 หลายเดือนก่อน +1

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

    • @SekaChan
      @SekaChan  6 หลายเดือนก่อน

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

  • @user-es4mp6qv8r
    @user-es4mp6qv8r 28 วันที่ผ่านมา +1

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

    • @SekaChan
      @SekaChan  27 วันที่ผ่านมา +1

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

  • @mondai40
    @mondai40 ปีที่แล้ว +5

    いつもお世話になっております。
    浮動小数点数の指数部について質問があります。
    他の方の質問に対する解説を見ました。
    ---以下引用---
    例えば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さんの認識とは逆ということになりますね。

  • @nanamiokada164
    @nanamiokada164 ปีที่แล้ว +3

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

    • @SekaChan
      @SekaChan  ปีที่แล้ว +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製品が作られたり、プログラムが動いていたりします😄

  • @Mamao-us1hs
    @Mamao-us1hs 8 หลายเดือนก่อน +1

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

    • @SekaChan
      @SekaChan  8 หลายเดือนก่อน +1

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

  • @user-sz3oc2le7r
    @user-sz3oc2le7r 2 หลายเดือนก่อน +1

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

    • @SekaChan
      @SekaChan  2 หลายเดือนก่อน

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

  • @jloc6tmk
    @jloc6tmk 22 วันที่ผ่านมา +2

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

    • @SekaChan
      @SekaChan  22 วันที่ผ่านมา +2

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

    • @jloc6tmk
      @jloc6tmk 22 วันที่ผ่านมา +2

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

  • @dpggdpdpwpa
    @dpggdpdpwpa 17 วันที่ผ่านมา +1

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

    • @SekaChan
      @SekaChan  16 วันที่ผ่านมา +1

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

  • @user-xw8qy1fr5d
    @user-xw8qy1fr5d ปีที่แล้ว +4

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

    • @SekaChan
      @SekaChan  ปีที่แล้ว +4

      智愛 福田さん、コメントありがとうございました!
      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」です。ただ、教科書でもここまで細かくは触れられていないため、最後の補足は読み流してくれて大丈夫です😄

    • @user-xw8qy1fr5d
      @user-xw8qy1fr5d ปีที่แล้ว +4

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

    • @SekaChan
      @SekaChan  ปีที่แล้ว +3

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

    • @user-lj2jc8zy9h
      @user-lj2jc8zy9h 11 หลายเดือนก่อน

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

    • @orix_ha_oshimai
      @orix_ha_oshimai 10 หลายเดือนก่อน +1

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

  • @user-el3jv6wv9g
    @user-el3jv6wv9g 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進数に限定した話になってしまうのではないかというご指摘で合っているでしょうか?
      また、浮動小数点数は表現方法が無数に存在しますが、コンピュータ内では書き方が固定されているややこしい関係だと思います。
      (リアルでは状況に応じていろいろな書き方が使われるケースがあります)

    • @user-el3jv6wv9g
      @user-el3jv6wv9g 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)の数値の内部表現については、(質問の意図を正確に把握できているか分かりませんが)ファイルによって表現方法は変わります。
      そのため、すべてのファイルが浮動小数点数で数値を表現しているわけではなく、他の表現方法も使われていますね。

  • @MnnbTngk
    @MnnbTngk 3 หลายเดือนก่อน +1

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

    • @SekaChan
      @SekaChan  3 หลายเดือนก่อน +1

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

  • @user-ji6hx8kk8o
    @user-ji6hx8kk8o ปีที่แล้ว +3

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

    • @SekaChan
      @SekaChan  ปีที่แล้ว +1

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

    • @user-ji6hx8kk8o
      @user-ji6hx8kk8o ปีที่แล้ว +1

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

    • @SekaChan
      @SekaChan  ปีที่แล้ว +4

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

  • @zephone2047
    @zephone2047 ปีที่แล้ว +4

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

    • @SekaChan
      @SekaChan  ปีที่แล้ว

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

  • @user-cd1dr3cv6m
    @user-cd1dr3cv6m 3 หลายเดือนก่อน

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

    • @SekaChan
      @SekaChan  3 หลายเดือนก่อน +1

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

  • @mirai0723
    @mirai0723 29 วันที่ผ่านมา +1

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

    • @SekaChan
      @SekaChan  29 วันที่ผ่านมา +1

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