🦷

苦手な2進数🥺💦

2024/11/22に公開

まずはかる~く復習(˘ω˘)嫌...

1バイトと1ビットの関係

変換

https://note.com/hiroki1026/n/n27d075523633
🌟記事の2進数⇒10進数の天才的~~~~🥺!!!!!!!

マイナス表現

STEPは2種類!

  1. 反転させる
  2. 1を足す
// 46(00101110)の場合
// STEP1 反転させる
11010001
// STEP2 1を足す
11010010 // これは-46らしい....🥺

もし2進数から10進数にしてください。ただマイナスを扱うものとするみたいな問題が出たら、、

  1. 1を引く
  2. 反転させる
    と逆にする😳!!
// 110は10進数ではなにか? ただしマイナスを扱うものとする

// STEP1 1を引く
101
// STEP2 反転させる
010
// 答えは10(2進数)だから10進数にすると...
2

整数と小数の両方がある数字の格納をするときに使う方法2選~~

固定小数点

あらかじめ整数部分の桁数と小数部分の桁数を決めておく。
後ろから何桁が少数とか書いてある!

例題
// 10進数6.5を8ビット固定小数点式による2進数で表せ。
// 小数点は後ろから4ビット 符号ビットは無しとする

まず60.5に分けてそれぞれ 110.1とする。(2進数)
6は正の数なので0110
小数は4ビットなので1000とかく
あわせると...
01101000

浮動小数点

指数を用いて小数点の位置を変化させながら最小限の情報量で数値を取り扱う
指数は10の3乗だったら3! ちなみに10は基数🙃

自分的解釈

例えば1.2345と1234.5という数字を格納するとき、最低でも整数部分と小数部分で4ビットは確保しなければいけなくなり、極端に言うと1つでも意味わからん位長い数字やとその分格納ビットが必要になる🥺.....くそ無駄じゃね?ってなって、小数点の位置指定出来たら最低のビット数でいいんじゃね??っていうこと

POINT
何の数字が出てきても0.数字~という形にして元の数字から0の動いた数(〇)を10に〇乗する

7.12 = 0.712 * 10
123.456 = 0.123456 * 1030.00987 = 0.987 * 1- 10-2

誤差

  • 丸め誤差:切り捨て・切り上げ・四捨五入などを行なったため起きた誤差
  • 打ち切り誤差:計算を途中で止めることで起きる誤差
  • 桁落ち:近い値の引き算の結果有効桁数が激減することで起きる誤差
  • 情報落ち:絶対値の差が大きい2つの数値の計算時に片方が反映されないことで起きる誤差
  • オーバーフロー:扱える範囲を超えてしまう事で起きる誤差
    byteとかintとか何バイトって決まってるけど、それを超えた時(基本エラーになる)
  • アンダーフロー:計算結果の指数部が小さくなりすぎる事で起こる(10の-20乗とか?)

これは何回もやるしかない

Discussion