ANALOG · DIGITAL
連続する量を、区切られた値で表す
アナログは連続量、デジタルは離散的な記号や数値で表現します。
角度・速度・電圧のように途中の値が連続して存在する量を、0と1など区切られた記号や数値で表す方法をといいます。現実の音や光は連続量ですが、コンピュータでは一定の規則で数値へ変換して扱います。

アナログ
連続的な変化を連続した信号として表しますが、複製や伝送を重ねると雑音やひずみの影響が蓄積しやすい性質があります。
デジタル
離散値なので複製・処理・保存に向き、一定範囲の雑音なら元の記号を判定して復元できます。
デジタル化した情報の品質は、どれだけ細かく時間を区切るか、値を何段階で表すかによって変わります。
さらに詳しく:デジタル化で失われるものと得られるもの
標本化では時間方向を、量子化では値の方向を区切ります。区切りを細かくすると元の信号へ近づきますが、データ量と処理量は増えます。必要以上に細かくしても、元のセンサ精度や再生装置の性能を超えた情報は得られません。
デジタル化の利点は「必ず正確」になることではなく、誤りを検出・訂正しやすいこと、同じ規則で大量に処理できること、複数の種類の情報をビット列として統合できることです。
さらに詳しく:A/D変換とD/A変換は現実世界との出入口
マイクや温度センサが出す連続的な電気信号を、標本化・量子化して数値へ変える装置がです。逆に、数値を電圧などへ変え、スピーカやモータへ出力する装置がです。
入力側ではセンサの測定範囲とA/D変換の段階数、出力側では再生装置の範囲を合わせます。範囲を超える信号は切り詰められ、段階数が少ないと細かな差を表せません。
BASE · BIT · BYTE
基数が変わると、使う記号と桁の重みが変わる
10進数・2進数・16進数は、同じ数量を異なる記号体系で表します。
…10³・10²・10¹・10⁰
…2³・2²・2¹・2⁰
…16³・16²・16¹・16⁰
例えば1011₂では、左から2³、2²、2¹、2⁰の重みをもちます。1が立っている桁だけを足すので、8+2+1=11です。16進法のBは10進数の11を表すため、1011₂=B₁₆=11₁₀です。2進数を16進数へ直すときは、右からずつ区切ると変換しやすくなります。
0または1を表す最小単位を、8ビットをといいます。各ビットが2通りの状態を独立に取るため、nビットの組合せは2×2×…×2=です。符号なし整数なら、nビットで0から2ⁿ−1までを表せます。例えば8ビットなら0〜255です。
| 接頭辞 | 10進の倍率 | 主な読み |
|---|---|---|
| k | 10³ | キロ |
| M | 10⁶ | メガ |
| G | 10⁹ | ギガ |
| T | 10¹² | テラ |
通信速度のbit/sと、ファイル容量のbyteを区別する
通信速度の「100 Mbps」は1秒当たり100 megabit、ファイル容量のMBはmegabyteです。1 byte=8 bitなので、単位をそろえてから転送時間や容量を計算します。
nビットで表せる状態数は2ⁿ通りです。必要な状態数以上になる最小の2ⁿを選び、その指数nが必要なビット数になります。
さらに詳しく:1000倍の単位と1024倍の単位
国際単位系ではk、M、Gはそれぞれ1000、1000²、1000³倍です。2進数と相性のよい1024倍を明確に表すときはKiB、MiB、GiBを使います。製品表示とOS表示で容量が違って見える原因になるため、計算ではどちらの規則かを先に確認します。
BASE CONVERSION
10進数と2進数を、桁の重みで往復する
2進数への変換は2で割った余り、10進数への変換は2の累乗を使います。
11₁₀ → 1011₂
- 11 ÷ 2 = 5余り 1
- 5 ÷ 2 = 2余り 1
- 2 ÷ 2 = 1余り 0
- 1 ÷ 2 = 0余り 1
余りを下から読む ↑
1011₂ → 11₁₀
8+0+2+1=11
2進数から16進数へ
右から4ビットずつ区切ります。例えば 11010110₂ は 1101 0110₂ なので、D6₁₆です。16進数1桁はに対応します。
SIGNED · FLOAT · TEXT
ビット列の解釈規則が、負数・小数・文字を決める
同じ0と1でも、符号化方式によって意味は異なります。
2の補数
負数は、正の値の全ビットを反転し1を加えるで表すことが一般的です。4ビットで+5は0101₂、反転して1010₂、1を加えて1011₂となり、これが-5を表します。
さらに詳しく:2の補数で引き算を足し算に変える
4ビットで5−3を確かめます。引く数3は0011₂です。全ビットを反転して1100₂、1を加えた1101₂が−3を表す2の補数です。
4ビットを超えた左端の1を捨てると0010₂、つまり2になります。したがって、5−3を「5+(−3)」として同じ加算回路で計算できます。4ビットの2の補数で表せる範囲は−8〜+7なので、範囲外の結果は正しく表せません。
浮動小数点数
IEEE 754 binary32は、・・で構成されます。有限のビット数で実数を近似するため、丸め誤差が生じます。
さらに詳しく:数値と浮動小数点表現を往復する
1. 10進数を浮動小数点の形にする
まず、10進数を符号・仮数・指数に分けます。例えば、−132.5は−1.325×10²と表せます。符号は−、仮数は1.325、指数は2です。小数点の位置を動かしても、表している数値は変わりません。
2. 10進数を2進数に直す
binary32の例として−46.625を考えます。整数部46は101110₂、小数部0.625は0.101₂なので、−46.625=−101110.101₂です。
3. 1.xxxxx×2ⁿの形に正規化する
小数点を左へ5桁動かすと、−101110.101₂=−1.01110101₂×2⁵となります。この形にすると、符号、指数、仮数へ分けて記録できます。
4. IEEE 754 binary32の各部に入れる
binary32は、符号部1ビット・指数部8ビット・仮数部23ビットです。負の数なので符号部は1、指数部は5に127を加えた132=10000100₂、仮数部は先頭の1を除いた01110101000000000000000です。
したがって、各部を順に並べると、1 10000100 01110101000000000000000₂(16進数ではC2 3A 80 00)になります。
5. 浮動小数点表現から数値へ戻す
逆に、16ビット表現「0 10001 1100100000」を読む場合を考えます。符号部0は正、指数部10001₂は17です。指数部が5ビットなので偏り15(2⁴−1)を引き、指数は17−15=2になります。
仮数部は先頭に1を補って1.1100100000₂とし、1.1100100000₂×2²=111.00100000₂=7.125と計算します。数値から読むときは、各部を確認してから指数に応じて小数点を動かすと、手順を追いやすくなります。
文字コード
文字とビット列の対応表が文字コードです。ASCIIではKが01001011₂です。日本語を含む文字集合や符号化方式にはJIS、Shift_JIS、UTF-8などがあります。現在のWebではが広く使われます。
文字集合と符号化方式を区別する
Unicodeは世界の多くの文字へを割り当て、UTF-8やUTF-16などのが符号位置をバイト列へ変換します。同じバイト列でも符号化方式を誤ると文字化けします。
| 対象 | 表現の要点 | 注意 |
|---|---|---|
| 負の整数 | 多くの計算機は2の補数 | 最上位ビットを含む固定ビット幅で解釈する |
| 小数 | 固定小数点または浮動小数点 | 0.1のように2進数で有限桁にならない値がある |
| 文字 | 符号位置をバイト列へ符号化 | 文字集合・符号化方式・改行規則をそろえる |
さらに詳しく:コードポイントとUTF-8のバイト列を区別する
Unicodeは文字ごとにU+3042のようなを割り当てます。UTF-8はそのコードポイントを1〜4 byteの並びへ変換する方式です。「1文字は必ず1 byte」でも「日本語は必ず2 byte」でもありません。
見た目が一文字でも、基底文字と結合文字の組合せや絵文字の連結によって複数のコードポイントからなる場合があります。文字数、表示幅、byte数は別々に考えます。
公式・公的資料 Unicode Consortium: What is Unicode? 文字集合、コードポイント、世界の文字を共通に扱う理由を標準化団体の説明で確認できます。 ↗さらに詳しく:改行やタブもデータとして保存される
文字コードには表示される文字だけでなく、改行、タブなど動作を指示するがあります。改行は環境によってLF、CRLFなどの表し方が異なり、テキストを別の環境へ移すと行がつながったり余分な改行に見えたりすることがあります。
CSVを読み書きするときに文字コードと改行規則を指定するのは、この違いを正しく扱うためです。画面に見えない文字も検索・比較・データ交換へ影響します。
BOOLEAN LOGIC
真理値表で、論理回路の出力を確かめる
AND・OR・NOTは、入力の組合せから0または1を出力します。
論理回路では、0と1を偽・真に対応させ、回路記号が行う演算を真理値表で確かめます。は両方が1のときだけ1、は少なくとも一方が1なら1、は0と1を反転します。NOT記号の小さな丸は否定を表します。



複数の回路は、入力側から一段ずつ読む
- AとBの値を決めます。
- 最初に通るAND・OR・NOTの出力を求め、回路図の途中へ書き込みます。
- その値を次の回路の入力として、最後の出力まで繰り返します。
- A・Bの4通りを真理値表へ並べ、読み落としがないか確かめます。
線の交点に黒丸があれば接続しています。単に線が交差しているだけなら、別の信号として扱います。式の記号を暗記するより、各回路がどの入力で1を出すかを図と真理値表で対応させます。
BINARY ADDITION · HALF ADDER
半加算器は、1桁の2進数どうしを足し算する
同じ桁に書く数と、上の桁へ繰り上げる数を二つの出力に分けます。

は、入力Aと入力Bという二つの1桁の2進数を加えます。出力は、計算結果を2桁に分けたとです。つまり、CとSを左から並べたCSが、A+Bの答えになります。
| 入力A | 入力B | C 繰り上がり | S その桁の和 | 2進数の足し算 |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0+0=00₂ |
| 0 | 1 | 0 | 1 | 0+1=01₂ |
| 1 | 0 | 0 | 1 | 1+0=01₂ |
| 1 | 1 | 1 | 0 | 1+1=10₂ |
1+1の答えは2進数で10₂です。いまの桁には0を書くのでS=0、左の桁へ1を繰り上げるのでC=1になります。この一行が、半加算器を理解する中心です。
AとBが0・0ならCSは00、0・1または1・0なら01、1・1なら10です。半加算器は「論理回路の出力」を別に覚える装置ではなく、です。
さらに詳しく:全加算器と、多桁の2進数の足し算
半加算器が扱うのはAとBという二つの入力だけです。しかし2桁目以降では、右隣の桁から繰り上がってきた1も加える必要があります。A・B・下位桁からの繰り上がりという三つを加え、上位桁への繰り上がりとその桁の和を出す回路がです。

多桁の加算では、右端の最下位桁から計算します。最下位桁には右隣からの繰り上がりがないため半加算器を使い、その左の各桁では全加算器を使います。

このように考えると、半加算器・全加算器・多桁加算は別々の暗記事項ではありません。「各桁を加え、繰り上がりを左へ渡す」という2進数の筆算を、回路で並行して行う仕組みです。
さらに詳しく:桁あふれを回路と数値表現の両方から見る
用意したビット数より左へ繰り上がっても、その桁を保存する場所がなければ結果を正しく表せません。これがです。例えば4ビットの符号なし整数で1111₂(15)に0001₂(1)を加えると、正しい答えは10000₂(16)ですが、下4桁だけを残すと0000₂になります。
「回路が計算を間違えた」のではなく、答えを保存する桁数が不足しています。扱える範囲を先に確認し、必要ならビット数を増やします。
SAMPLING · QUANTIZATION · ENCODING
音は、標本化・量子化・符号化の順で数値になる
時間方向と振幅方向をどれだけ細かく区切るかが、音質とデータ量を決めます。

一定時間ごとに振幅を測る。
振幅を有限個の段階へ割り当てる。
段階値を2進数で表す。
1秒間の標本数を(Hz)、1標本を表すビット数をといいます。一般に値を大きくすると再現性は高まりますが、データ量も増えます。
さらに詳しく:標本化で起こる誤差
測定間隔が粗いと、標本点の間で起きた細かな変化を記録できません。特に、標本化周波数の半分より高い周波数成分は、実際とは違う低い周波数に見えるを生むことがあります。
そこで、記録したい最高周波数の2倍より高い標本化周波数を使い、標本化前にそれより高い成分をフィルタで弱めます。標本化周波数を上げるほど時間方向を細かく記録できますが、データ量も増えます。
さらに詳しく:量子化で起こる誤差
量子化では、実際の振幅を最も近い段階値へ丸めます。実際の値と割り当てた段階値の差がです。例えば実際の振幅が5.3で、段階値が整数だけなら5へ割り当てるため、誤差は−0.3です。
量子化ビット数がnビットなら段階数は2ⁿです。ビット数を増やすと段階の間隔が細かくなり誤差を小さくできますが、1標本当たりのデータ量は増えます。
音声のデータ量は、標本化周波数、量子化ビット数、録音時間、チャンネル数を掛けて求めます。式で表すと、データ量[bit]=標本化周波数×量子化ビット数×時間×チャンネル数です。
標本化周波数48 kHz、量子化16 bit、2チャンネルで10秒録音したとき、圧縮前のデータ量は約何Mバイトか。
解答・解説
48 kHzは1秒間に48,000回標本化するという意味です。10秒では、48,000×10=480,000回の標本化になります。
1回の標本は16 bitで、2チャンネルなので、16×2=32 bit、つまり4バイトです。したがって、データ量は480,000×4=1,920,000バイトです。
1000バイト=1kバイト、1000kバイト=1Mバイトとして、1,920,000バイト=1,920kバイト=約1.92Mバイトとなります。実際の音声ファイルには管理情報が付き、圧縮形式では容量が変わります。
音の高さ・大きさ・音色を波形から読む
1秒間の振動回数をといい、単位はHzです。一般に周波数が高いほど音は高く聞こえます。振幅は音の大きさに関係し、波形に含まれる周波数成分の組合せが音色へ影響します。
さらに詳しく:音声圧縮と演奏情報
WAVなどはPCMを比較的そのまま保持できます。MP3やAACは、人が聞き取りにくい成分を減らすで容量を小さくします。FLACは復元後が元と一致するです。
MIDIは波形そのものではなく、音の高さ、長さ、強さ、楽器などの演奏情報を記録します。容量は小さく編集しやすい一方、再生音は音源に依存します。
PIXEL · COLOR · COMPRESSION
画像は、画素または図形の情報として表す
画像データの構造と色の表現を別の観点として整理します。
ラスタ形式
画素ごとの色を保存。写真やスキャン画像に向き、拡大すると画素が見える。
ベクタ形式
点・線・曲線を座標や数式で保存。拡大しても輪郭を滑らかに描き直せる。
| 比較点 | ラスタ形式 | ベクタ形式 |
|---|---|---|
| 保存するもの | 格子状に並んだ画素それぞれの色 | 点の座標、線・曲線、塗り、文字などの描画命令 |
| 得意なもの | 写真、スキャン画像、細かな濃淡や質感 | ロゴ、アイコン、地図、模式図、文字を含む図 |
| 拡大したとき | 元の画素数を超えると、輪郭がぼけたり階段状に見えたりする | 表示サイズに合わせて描き直すため、輪郭を滑らかに保ちやすい |
| 編集方法 | 画素を選び、色や明るさを直接変更する | 図形の位置・大きさ・輪郭・塗りを部品ごとに変更する |
| 容量の傾向 | 画素数・色深度・圧縮方法の影響が大きい | 単純な図は小さくしやすいが、図形や効果が増えると大きくなる |
| 代表例 | JPEG、PNG、GIF、WebP、TIFF | SVG、EPS。PDFはベクタとラスタの両方を含められる |
写真のように画面全体で色が細かく変わる画像は、無数の図形に分けるよりラスタ形式が効率的です。一方、学校のロゴや路線図のように輪郭と面の組合せで表せる図は、ベクタ形式なら小さな表示から印刷まで同じデータを使いやすくなります。
SVGをPNGへ書き出すと、その時点の画素数をもつラスタ画像になります。反対に、JPEGをSVGファイルへ埋め込んだだけでは、写真の画素が自動的に線や曲線へ変わるわけではありません。用途に合う形式を、作成・編集の段階から選びます。
ラスタ画像は、画像を画素に区切る、明るさや色を有限の段階へ割り当てる、段階値を2進数で表すの順でデジタル化します。

無圧縮画像では、横画素数と縦画素数を掛けた画素数に、1画素あたりのビット数を掛けてデータ量を求めます。式で表すと、無圧縮画像のデータ量[bit]=横画素数×縦画素数×1画素のビット数です。
ディスプレイは光の三原色を使う加法混色です。R・G・Bを同じ強さで重ねると白になります。プリンタは色材の三原色を使う減法混色で、実際には黒の再現とインク量の節約のためKを加えたCMYKを使います。RGB各色8ビットなら1画素は24ビットで、表せる色は2²⁴=16,777,216色です。
800×600画素、1画素24ビットの画像のデータ量は約何Mバイトか。
解答・解説
画素数は800×600=480,000画素です。1画素24ビットなので、全体のデータ量は480,000×24=11,520,000ビットです。
8ビット=1バイトなので、11,520,000÷8=1,440,000バイトです。
1000バイト=1kバイト、1000kバイト=1Mバイトとして、1,440,000バイト=1,440kバイト=約1.44Mバイトとなります。これは無圧縮の場合の値で、PNGやJPEGなどで圧縮した後の容量は画像の内容と圧縮方式によって変わります。
画面では画素数、印刷やスキャンでは1インチ当たりの点や画素数(dpi・ppi)を指すことがあります。何を表す値か確認します。
用途に合わせて、画像形式と圧縮方法を選ぶ
上の式を1920×1080画素、RGB各8 bitへ当てはめると、非圧縮では1920×1080×24=49,766,400 bit、約6.22 MBです。実際のファイル容量は、形式と画像内容、圧縮方法によって変わります。
| 形式 | 特徴 | 向く用途 |
|---|---|---|
| JPEG | 写真向けの非可逆圧縮。繰返し保存で劣化し得る | 写真、Web掲載 |
| PNG | 可逆圧縮、透過を扱える | 図、文字を含む画像、画面 |
| GIF | 色数が限られるが簡単なアニメーションを扱える | 小さな図や短い動き |
| SVG | 図形を数式・属性で表すベクタ形式 | ロゴ、アイコン、拡大する図 |
さらに詳しく:画像処理では元に戻せるかを意識する
明るさ・コントラスト・色調の補正、トリミング、回転、拡大縮小、フィルタ処理などがあります。画素を間引いた後に拡大しても失った細部は戻りません。編集用の元データを残し、公開用のサイズや圧縮率は別に調整します。
印刷物ではCMYK、ディスプレイではRGBが基本ですが、機器ごとに表せる色の範囲が異なるため、同じ数値でも完全に同じ色になるとは限りません。
さらに詳しく:可逆圧縮と非可逆圧縮の中にも複数の考え方がある
同じ値が続く長さを記録するランレングス法、出現頻度の高い記号へ短い符号を割り当てるハフマン法、既出の並びを辞書として参照する方式などがあります。これらは元データへ戻せるです。
JPEGなどの非可逆圧縮は、人が気付きにくい細部を減らして大きく圧縮できます。ただし、保存を繰り返すと劣化が重なります。編集用は元データや可逆形式、配布用は用途に合う圧縮率というように使い分けます。
さらに詳しく:解像度・色深度・画像サイズを一つの式で結ぶ
圧縮前のラスタ画像のおよそのデータ量は、横画素数×縦画素数×1画素当たりのbit数で求めます。RGB各8 bitなら1画素24 bitです。透明度を8 bit追加する形式では32 bitになります。
印刷のdpiは1 inch当たりの画素数です。横3000画素の画像を300 dpiで印刷すると横10 inchになります。画素数、物理的な大きさ、dpiのうち二つを決めると残りが決まります。
さらに詳しく:輪郭のぎざぎざを減らすアンチエイリアシング
斜線や曲線を画素の格子へ置くと、境界が階段状に見えるが生じます。アンチエイリアシングは、境界付近の画素へ中間色や透明度を与え、滑らかな輪郭に見せる処理です。
元の解像度が増えたわけではなく、周囲との平均で見え方を調整しています。小さな文字ではぼやける場合もあるため、表示倍率、背景色、フォントのヒンティングと合わせて調整します。図を縮小する時も、単純な間引きではなく適切な再標本化を使います。
さらに詳しく:ディザリングで、少ない色から中間の見え方を作る
は、使える色が少ない時に異なる色の画素を規則的または確率的に配置し、離れて見た時に中間色や階調があるように感じさせる方法です。新聞写真の網点も似た考え方です。
色数を増やす処理ではないため、拡大すると点の模様が見えます。滑らかな階調を優先するか、輪郭や細部を残すかで配置方法を選び、表示装置や印刷方法に合わせて評価します。
CPU · MEMORY · I/O · SOFTWARE
五大装置が連携し、命令を順に実行する
入力・記憶・演算・制御・出力の役割を、データと命令の流れで捉えます。
結果を書き戻す
読み出し/保存
| 装置 | 役割 | 例 |
|---|---|---|
| 入力装置 | データや指示を取り込む | キーボード、マウス、センサ |
| 記憶装置 | 命令とデータを保存する | メモリ、SSD |
| 演算装置 | 算術演算・論理演算を行う | CPU内の演算回路 |
| 制御装置 | 命令を解読し各装置を制御する | CPU内の制御回路 |
| 出力装置 | 処理結果を外へ示す | ディスプレイ、プリンタ |
CPUの速さは、一つの数値だけでは決まらない
はCPU内部の動作タイミングを1秒当たりの回数で表します。ただし、1回のクロックで行える仕事、コア数、キャッシュ、主記憶とのやり取り、実行するソフトウェアなども処理時間へ影響します。同じクロック周波数でも、設計や処理内容が違えば速さは同じとは限りません。
はハードウェア資源を管理し、アプリケーションへ共通機能を提供する基本ソフトウェアです。デバイスドライバは機器固有の操作をOSにつなぎ、ファームウェアは機器の基本制御や起動を担います。
CPUは、命令の取出し・解読・実行を繰り返す
主記憶装置から命令をへ取り出し、制御装置が命令を解読し、必要なデータをレジスタへ読み、演算装置が処理して結果を書き戻します。このがクロックに合わせて繰り返されます。
| 層 | 役割 | 特徴 |
|---|---|---|
| レジスタ | CPUが直ちに使う値 | 非常に高速・小容量 |
| キャッシュメモリ | よく使う命令・データを保持 | 主記憶との速度差を縮める |
| 主記憶装置 | 実行中のプログラムとデータ | 電源断で内容が失われるRAMが中心 |
| 補助記憶装置 | 長期保存 | SSD、HDDなど。大容量だが主記憶より遅い |
さらに詳しく:OSとアプリケーションの役割
は、CPU時間、主記憶、ファイル、入出力装置、利用者権限を管理し、アプリケーションへ共通の機能を提供します。アプリケーションが機器ごとの違いをすべて直接扱わずに済むのは、OSやデバイスドライバが仲立ちするためです。
コンパイラやインタプリタは人が書いたプログラムを実行可能な命令へ橋渡しします。最終的にCPUが実行するのは機械語の命令です。
さらに詳しく:性能測定とボトルネック
は、決められた処理を実行して性能を比較する方法です。目的と違う種類のベンチマークだけで機器を選ぶと、実際の利用感と一致しないことがあります。
CPUが速くても主記憶が不足してストレージへの退避が増える、ネットワークが遅くて待ち時間が長いなど、全体を制限する部分をといいます。利用場面に近い条件で測定します。
さらに詳しく:バスとデバイスドライバ
CPU、主記憶、入出力装置の間では、データを運ぶデータバス、場所を示すアドレスバス、読み書きなどを指示する制御線が働きます。一本の線だけで命令もデータも順番も運ぶわけではありません。
は、OSからの共通的な要求を機器固有の命令へ変換します。新しい機器を接続した時にドライバやOSの対応状況を確認するのは、同じ種類の装置でも制御方法が異なるためです。
さらに詳しく:キャッシュは時間的・空間的局所性を利用する
CPUは主記憶より高速なので、よく使う命令やデータを小さく高速なへ置きます。直前に使ったデータを再び使いやすい性質を時間的局所性、近いアドレスのデータを続けて使いやすい性質を空間的局所性といいます。
配列を順番に処理すると近いデータをまとめて読み込みやすくなります。キャッシュ容量だけでなく、データの並べ方やアクセス順も実行時間へ影響します。
FINITE PRECISION · ERROR
有限桁で表すと、あふれや近似による誤差が起こる
コンピュータが扱える桁数には限りがあるため、整数や小数の計算結果を点検する必要があります。
| 誤差 | 発生する状況 | 具体例 |
|---|---|---|
| 固定ビット数で表せる範囲を超える | 16ビット符号なし整数で60,000+10,000を計算すると上限65,535を超える | |
| 有限桁へ丸める | π=3.141592…を3.1416として計算する | |
| 無限に続く計算を途中で止める | 1+1/2+1/4+…を有限項までで打ち切る | |
| ほぼ等しい値の差で有効桁が減る | 1.0001−1.0000のような近い数の差で上位桁が消える | |
| 絶対値が大きく異なる値の計算で小さい値が反映されない | 非常に大きな値へ小さな値を足しても、有限桁では変化が残らない |
2進浮動小数点では0.1を有限桁で正確に表せないため、Pythonの 0.1 + 0.2 が 0.30000000000000004 となる例があります。金額のように10進での正確さが必要な場合は整数の最小単位で保持する、10進型を使う、比較時に小さな許容誤差を設けるなど、目的に合う方法を選びます。