7月14日(水)1コマ目
今日、やったこと
誤差、文字コードのテスト
今日のテスト
問1
No.1
値がほぼ等しい浮動小数点同士の減算を行うと、仮数部の大半が消えてしまい、有効桁数がすくなくなります。これをけた落ちと呼びます。
No.2
扱うことができる桁数には上限があるため、仮数部の最小けた以下の値は四捨五入や切り捨て、切り上げを行って(この処理を丸めと呼ぶ)桁数内に納めます。これを丸め誤差と呼びます。
No.3
絶対値の大きな数と小さな数同士の加減算を行う際、指数部を合わせることでどちらかの値の仮数部が扱うことができる桁数内に収めることができなくなり、計算にも反映されなくなります。これを情報落ちと呼びます。
No.4
扱うことができる上限を超える=オーバーフローです。
問2
情報落ちが発生するのは絶対値の大きな数と小さな数の加減算を行ったとき。
ア 絶対値が同じような数の減算で、ケタ落ちが発生するおそれあり。
イ 絶対値が同じような数の減算で、ケタ落ちが発生するおそれあり。
ウ 2つの値は他に比べてかなり離れている。情報落ちが発生するおそれあり。
エ 絶対値が同じような数の減算で、ケタ落ちが発生するおそれあり。
問3
No.1
正しい。
No.2
EUC-JPはおもにUNIXやLinuxで利用される符号化方式であり、対象文字集合には漢字を含む。
No.3
UNICODEは多国語を収容した文字集合である。
No.4
符号化文字集合であるJIS X 0208には半角英数字、記号、半角カナ、制御文字を含み、全角かなも含む。
問4
1文字が1~4バイトになるため、1バイト目か否かがわかるようにする必要がある。
UTF-8では1バイト目は0または11で始まり、2バイト目以降は10で始まることで、1バイト目か否かがわかる。
問題を1バイトずつ先頭4ビットだけ書くと以下のとおり。
33 0011 0で始まるため1文字目の1バイト目
CF 1100 11で始まるため2文字目の1バイト目
80 1000 10で始まるため2文字目の2バイト目
E3 1110 11で始まるため3文字目の1バイト目
81 1000 10で始まるため3文字目の2バイト目
AF 1010 10で始まるため3文字目の3バイト目
E7 1110 11で始まるため4文字目の1バイト目
B4 1011 10で始まるため4文字目の2バイト目
84 1000 10で始まるため4文字目の3バイト目
33 0011 0で始まるため5文字目の1バイト目
2E 0010 0で始まるため6文字目の1バイト目
31 0011 0で始まるため7文字目の1バイト目
34 0011 0で始まるため8文字目の1バイト目
E3 1110 11で始まるため9文字目の1バイト目
81 1000 10で始まるため9文字目の2バイト目
A7 1010 10で始まるため9文字目の3バイト目
E3 1110 11で始まるため10文字目の1バイト目
81 1000 10で始まるため10文字目の2バイト目
99 1001 10で始まるため10文字目の3バイト目
2D 0010 0で始まるため11文字目の1バイト目
よって、11文字。
コメント