# Chapter2-4,3-1 「誤差」「コンピュータの回路を知る」 ## 4/10(土) ###### tags:`基本情報技術` 皐月: >(天の声) >全部が全部エラーになるというわけではないですね。 プログラミングでは、桁落ちや誤差を加味して実装するというイメージになるかな。 桁あふれとかでバグになることも多々あります。 小数点以下の誤差は誤差が出ないように意図的に丸めるとか切り捨てるとかします。 * 誤差...実際の数値と、コンピュータ内部で表現できる数値との間に生じたずれのこと * 無限小数など、絶対に割り切れない数値は、「極力それに近い値」で済ませるしかない→実際の値との間に誤差が生じることになる。 * 誤差の種類 * けたあふれ誤差...演算した結果が、コンピュータの扱える最大値や最小値を超えることによって生じる誤差。 * 最小値を超えることをアンダーフロー、最大値を超えることをオーバーフローという。 * 情報落ち...絶対値の大きな値と、絶対値の小さな値とで加算限を行ったとき、絶対値の小さな値が計算結果に反映されないこと * 打ち切り誤差...計算処理を、完了まで待たずに打ち切ることによって生じる誤差。ex)円周率3.141592...... * コンピュータが取り扱う数値の桁は有限 * 単精度浮動小数点でだめなら、倍精度浮動小数点。多くの言語でこれが最大のデータ型。 * けた落ち...絶対値がほぼ等しい数値同士の差を求めた時に、有効な桁数が大きく減ることによって生じる誤差 * 丸め誤差...表現できる桁数を超えてしまったために、最小桁より小さな部分について、四捨五入、切り上げ、切り捨てなどで丸める誤差 * [プログラムによる小数点以下の計算で誤差が生じる原因と対処法2選](https://cyzennt.co.jp/blog/2019/08/10/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AB%E3%82%88%E3%82%8B%E5%B0%8F%E6%95%B0%E7%82%B9%E4%BB%A5%E4%B8%8B%E3%81%AE%E8%A8%88%E7%AE%97%E3%81%A7%E8%AA%A4%E5%B7%AE%E3%81%8C%E7%94%9F%E3%81%98/) * 浮動小数点を使用することで、丸め誤差が生じる恐れがあるなら、int型など、整数型の使用を考える。 * 過去問 * おけ! * コンピュータの回路を知る! * 論理演算というのは、1を真true、0を偽falseとして、1と0だけで行う演算。 * ここら辺はプログラミングのif文書いていると、なんとなくわかるぞ。。。 * 過去問 * おけ!この色塗りはたのしいww * 回路は楽しいかも〜〜〜 にわ: - chapter 2-4(誤差) - 読み込み * 「0.33333...」とかの実際の数値とコンピュータで表現できる数値とには差異が生じる=「誤差」 * コンピュータの扱える最大値、最小値を超える誤差を「けたあふれ誤差」と言い、最大値超え:オバーフロー、最小値超え:アンダーフロー という * オーバーフロー聞いたことあったわ・・・扱える最大バイト数超えでエラーになるやつ * 誤差には色々種類がある * 情報落ち:絶対数の加算減算で小さい値が有効桁数からはみ出て無かったことになるときの誤差 * 打ち切り誤差:円周率とかの延々と続く計算処理を途中で打ち切ることによる誤差 * 桁落ち:差がめっちゃ小さい(=絶対数が近い数の差を求めた時に有効桁数が小さくなる)場合に浮動小数点だと正規化が行われ、それにより生じる誤差 * 丸め誤差:表現できる最小桁数より小さい桁数を四捨五入したり切り捨てたりするときの誤差 - 過去問 * これは用語と定義を覚えてれば解ける問題 - chapter 3(コンピュータの回路) - 読み込み * コンピュータは「論理演算」(=真偽値を用いた演算)をビットの演算に使うことでいろんな処理ができている! * 論理演算ではAND,OR,NOTを主に使う。 * AND=「論理積」、OR=「論理和」 * 確かに、普段if文書いてるので理解しやすい - 過去問 * 文字の上に棒線ついて否定表すの、高校ぶりに見た・・・w * ベン図書いて解きましょうってことね! * 個人的には日本語(か、プログラミング言語)変換が必要。PHP:(!A && !B && C)||(A && !B && C)||(!A && B && C)||(A && B && C)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up