*情報の基礎理論 [#qc35d9ee] コンピュータを学習するうえで必要となる基礎事項・知識について解説します。~ **数値変換とデータ表現 [#vd1a3b08] ***r進法 [#b8932461] 10進法に代表されるr進法。~ 2進法とか3進法などなど。この2とか3とかを''基数''といいます。~ たとえば、16進法であらわされた$2A.4({_1_6})$は~ $2\times16^{1} + 10\times 16^0 + 4\times 16^{-1} = 32+10+0.25= 42.25$ となります。 ** 正の整数の表現 [#qfe30c66] *** 2進数nけたで表現できる数 [#y4279d83] 2進数は各桁を0か1で表現します。2進数で表現できる正の数は~ ''$0\sim2^n-1$''~ です。~ ** 負数の表現 [#s07697d3] *** 2の補数 [#jaafe1e9] 一般的に負の数を表現する場合、''補数''というものが用いられます。~ 補数を利用する理由は、コンピュータではそもそもマイナスは使えません。 そこで、最上位ビットの上にけたに1があると仮定し計算した結果を-1とします。 #sh(){{ 100000000 - 1 → N ---------- 011111111 → M N(1) + M(−1) = 0 }} このような考え方で2の負数を補数であらわします。~ 補数であらわせる負数の範囲は nビットの場合、 $-1\sim-2^{n-1}$ です。 ** 負数を表現する方法 [#l3c80aa5] 負数を表現する方法は3つあります。 +2の補数 +符号と絶対値 → 0と-0がある。 +1の補数 → 0と-0がある。 正負の別を表現するために先頭の1ビットを使用します。~ この中で2の補数がもっとも一般的です。 ** 小数点数の表現 [#l7732d23] ***小数の表現 [#yce3cd89] 一般的に小数だけで構成された数値を表現する場合は、最上位ビットの右側を小数点位置とします。これを''固定小数点表現''といいます。 #sh(){{ 01010000 = 0.625 |_小数点位置 11010000 = 0.625 - 1 = -0.375 |_小数点位置 }} **小数点数の表現 [#gfd170cf] 上記の固定小数点表現では整数部分を表現できません。そのため小数点を右に移動させ整数部分を拡張します。 #sh(){{ 01011010 = 5.625 |_小数点位置 11011010 = -2.375 |_小数点位置 }} ** 浮動小数点数表現 [#ee753a4b] *** 実数の表現 [#xc5d514a] 7.25を有効桁数を表す''仮数部''と桁数を表す''指数部''に分けられる。~ $7.25 = 10^1 * 0.725$~ ~ 10:底~ 1:指数部~ 0.725:仮数部 → 1未満で表現する。~ ~ この表現方法を浮動小数点表現といいます。~ ~ **正規化 [#lef3c557] 浮動小数点表現で仮数部の最上位桁が0以外になるように桁を合わせることを''正規化''といいます。 $7.25 = 111.01(_2)$ ~ = $2^0\times111.01(_2)$ ~ = $2^3\times0.11101(_2)$ ~ #sh(){{ 0 00000011 1110 1000 0000 0000 0000 000(浮動小数点4バイト) | | |_仮数部。ここが小数第1位 | |_指数部 |_正で0 }} ~ **有効けた数 [#f5b3b21c] 正規化した2進浮動小数点の有効桁数は''仮数部の桁数''で決まります。 #hr /[[Top]]/[[応用情報tips]]/