投稿

5月, 2023の投稿を表示しています

5月31日(水)1コマ目

イメージ
今日、やったこと 誤差(ケタ落ち、情報落ち) 文字コード 今日のホワイトボード 有効ケタ数とは 実際に測定した値が格納されているケタが有効ケタ。 桁数合わせのために入れた値は信頼できない値。有効ケタではない。 図 有効ケタ数 [誤差]ケタ落ち 近い値同士の引き算をする際、正規化をすることで、信頼できない値が挿入される。このタイミングで有効ケタ数が減る。これがケタ落ち。 図 ケタ落ち [誤差]情報落ち 離れた値同士の計算をする際、指数部を合わせる。このとき、仮数部のデータが消えてしまうことがある。これが情報落ち。 図 情報落ち 文字コード 一般的によく使われている「文字コード」という単語は利用する局面で指すものが異なるケースが多い。よって、この授業ではなるべく文字コードという単語は使わないようにする。 文字集合、符号化 コンピュータでは各文字にオンリーワンな番号を割り当てて、その番号で文字を扱っている。 番号を振る文字の集まりが文字集合。 符号化とは、各文字にオンリーワンな番号(符号)を割り当てること。 図 文字集合、符号化 ISO、JIS いずれも規格を作る団体やその団体が作った規格。 ISOはグローバルな規格。JISは日本だけの規格。 図 ISOとJIS 符号化文字集合 各文字に符号を割り当てた文字集合を符号化文字集合。 図 文字集合と符号化文字集合 次回は 誤差の確認テストをします。 文字コードの続きをやります。  

5月24日(水)1コマ目

イメージ
今日、やったこと [確認テスト]ビットシフト 誤差(オーバーフロー、アンダーフロー、丸め誤差) 今日のホワイトボード [誤差]オーバーフロー  データがデータサイズ(最大値)より大きくなると発生する。 図 オーバーフロー [誤差]アンダーフロー 浮動小数点データが最小値より小さくなると発生する。 図 アンダーフロー [誤差]丸め誤差 浮動小数点形式の場合、仮数部がデータサイズより大きい場合に発生。 2進数に変換、正規化した結果、仮数部がデータサイズ(floatなら23ビット、doubleなら52ビット)より大きい場合、データサイズ内に収めるため、floatなら24ビット目以降、doubleなら53ビット目以降を切り上げまたは切り捨てる。これが丸め。 丸めをすると、元のデータから誤差ができる。これが丸め誤差。 図 丸め誤差 次回は 誤差の続きをやります。 テストはしません。

5月17日(水)1コマ目

イメージ
今日、やったこと ビットシフト 今日のホワイトボード 単純な左シフト、右シフトの練習問題をやってもらいました。 問1 ”符号なし”なので、右シフトは論理シフト(無条件に0を代入)です。 図 問1 問2  ”符号あり”なので、右シフトは算術シフト(符号ビットと同じ値を代入)です。 図 問2 問3 問題は一見訳がわからんようなかんじですが、要は ①16進数のABCDを16ビットの2進数へ ②右シフト ③16進数へ です。 図 問3 左シフトは掛け算 10進数で考えるとわかりやすいです。 図 10進数で左シフト 2進数でも理屈は同じです。 図 2進数で左シフト 右シフトは割り算 10進数で考えるとわかりやすいです。 厳密にいうと、右シフトすると割り算の整数部になります。 図 10進数で右シフト 2進数でも同じです。 図 符号なし2進数で右シフト(論理シフト) 図 符号あり2進数で右シフト(算術シフト) x2 n 以外の掛け算 x3やx5のような2 n ではない

5月10日(水)3コマ目

イメージ
今日、やったこと [解説]負数を含む基数変換(2進数<=>10進数) [確認テスト]浮動小数点形式の基数変換 ビットシフト 今日のホワイトボード [解説]負数を含む基数変換 連休前にやった確認テストの解説をしました。 2の補数から1の補数への計算(2進数の引き算)を間違っている方がちょこちょこおられました。 問1 10進数を2進数へ(負数は絶対値の2進数で表す) ① 10進数-3を4ビットの2進数へ(負数は絶対値の2の補数で表す) 図 問1の① ② 10進数-1を4ビットの2進数へ(負数は絶対値の2の補数で表す) 図 問1の② ③10進数-14を8ビットの2進数へ(負数は絶対値の2の補数で表す) 図 問1の③ 問2 2進数(負数は絶対値の2の補数になっている)を10進数へ ①2進数1111 0100(負数は絶対値の2の補数になっている)を10進数へ 1の補数にする際の引き算に注意!! 2進数の引き算(繰り下がりあり)  ① ② ③  1 0 0  ー   1 ③のケタの引き算はできないので、上のケタ(②)から借りてきます。 が、②のケタも0なので、さらに上のケタ(①)から借りてきます。 ①のケタから2を1つ下のケタ(②)に貸します。その結果、①のケタの数は1(①のケタの数)- 1 (②に2を 1 個貸す)=0になります。 ②のケタには①のケタから2を借りてきました。が、さらに下のケタ(③)に2を1つ貸すため、②のケタの数は2(①から借りてきた)- 1 (③に2を 1 個貸す)=1になります。 ③のケタには②のケタから2を借りてきました。③のケタの計算結果は2(②から借りてきた)-1(③のケタの引く数)=1が③のケタの計算結果になります。 ②のケタの計算結果は1(③に貸したあとの②のケタの数)-0(②