| 受験者は以下的能力を備えているべきである: | メモおよびガイドライン |
|---|---|
| 二進数の量と二進数接頭辞・十進数接頭辞の違いを理解する | 以下の違いを理解して使い分けること:• kibi と kilo • mebi と mega • gibi と giga • tebi と tera |
| 異なる数系を理解する | 二進法、十進法、十六進法の数系および、二進数に対するBCD(バイナリコードドデシマル)、1の補数、2の補数の表記法を使用すること |
| 整数値をある進数系/表現から別の進数系/表現へ変換する | |
| 二進数の加減算を行う | 正の整数および負の整数を含む二進数において |
| オーバーフローが発生する仕組みを理解する | |
| BCD(バイナリコードドデシマル) および 十六進法 が使用される実用的な応用例を説明する | |
| 使用される文字セットに応じて、文字データを内部の二進形式で理解し表現できる | ASCII(American Standard Code for Information Interchange)、拡張ASCII、およびUnicodeに精通していることが期待されます。特定の文字コードを暗記することは求められません |
情報の表現
A-Levelコンピュータ科学 · トピック 1
22:30
数系とデータ
この写真。この曲。この動画そのもの。あなたの名前、メッセージ、すべてのデバイスのすべてのファイル——コンピュータ内部では、すべてがゼロと一でしかありません。…
英語ナレーション・英語+中文字幕 burning-in
1.1
進数系
シラバス
出典: Cambridge International シラバス
必ず知っておくべき3つの進数系:
- 十進法 (decimal, 基数10) — 桁0–9を使用する。位値は10の累乗である。
- binary (base 2) — uses 0 and 1. Place values are powers of two. Every byte is 8 bits.
- ヘキサデシマル(基数16)— 0〜9の後にA〜F(10〜15を表す)を使用。各ヘキサデジットはちょうど4ビットを表す。

変換
デナリー → バイナリ: 2で割り続け余りを記録し、下から上へ読むか、あるいは収まる最大の位取り(2の累乗)を引いていく。
例:$558_{10}$: $558 = 512 + 32 + 8 + 4 + 2 = 2^{9} + 2^{5} + 2^{3} + 2^{2} + 2^{1}$。12ビットの場合:0010 0010 1110。
バイナリ → ヘキサ: 右から順にニブル(4ビット)に grouping し、それぞれを変換する。0010 0010 1110 → 2 2 E → 22E。
ヘキサ → バイナリ: 各ヘキサデジットを4ビットパターンに置き換える。ヘキサ → デナリ: 各デジットにその位取りを掛けて合計する。22E $= 2 \times 256 + 2 \times 16 + 14 = 558$。
** worked example.** デナリ200を8ビットバイナリに変換し、さらにヘキサデシマルに変換せよ。
$200 = 128 + 64 + 8$なので、バイナリは11001000である。ニブルごとに1100 1000 $= 12$ および$8$となり、つまり$\text{C}$ と$8$ なので、ヘキサデシマルはC8である。

ビット数は?
試験問題はレジスタ幅(8, 12, または16ビット)を固定する。先頭零でパディングしてその幅にする:$558$を12ビットで表すと0010 0010 1110であり、10 0010 1110ではない。
ある値を格納可能な最小ビット数を求めるには、必要な位取りを問う:
- 無符号整数で$0$から$2^{n} - 1$までの範囲には$n$ビットが必要です:$200$には8ビットが必要(最高位は$255$)、$1000$には10ビットが必要(最高位は$1023$)、$16$には5ビットが必要(4ビットでは最大$15$までです)。
- $-2^{n-1}$ から $2^{n-1} - 1$ までの符号付き2の補数整数表現には $n$ ビットが必要である。$-200$ を表現するには 9 ビットが必要であり、なぜなら 8 ビットでは最大 $-128$ までしか表現できないからである。
- one hexadecimal digit needs 4 bits, one BCD digit needs 4 bits, and one ASCII character needs 7 bits (8 for extended ASCII).
Binary vs decimal prefixes
Two prefix families look similar but differ — decimal (powers of 10) and binary (powers of 2):
| Decimal (SI) | Binary (memory) |
|---|---|
| キロ $= 10^{3}$ | クィビ (Ki) $= 2^{10} = 1024$ |
| メガ $= 10^{6}$ | メビ (Mi) $= 2^{20}$ |
| ギガ $= 10^{9}$ | ギビ (Gi) $= 2^{30}$ |
| テラ $= 10^{12}$ | テビ (Ti) $= 2^{40}$ |
したがって、テビバイト(TiB)はテラバイト(TB)よりわずかに大きいです。「1 TB」のドライブには$10^{12}$バイトを保持しますが、TiB単位で表示するOSではより小さな数値が表示されます。
バイナリ、デナリ、ヘキサデシマル
数を入力すると、バイナリ、デナリ、ヘキサデシマルで同時に表示され、位値の和がわかります。
| English | 日本語 |
|---|---|
| number system/ˈnʌmbə ˈsɪstəm/ | 進数 |
| binary/ˈbaɪnəri/ | 二進法 |
| digit/ˈdɪdʒɪt/ | 桁 |
| place value/pleɪs ˈvæljuː/ | 位値 |
| byte/baɪt/ | バイト |
| bit/bɪt/ | ビット |
| hexadecimal/ˌheksəˈdesɪml/ | 十六進法 |
| nibble/ˈnɪbl/ | ニブル |
| register width/ˈredʒɪstə wɪtθ/ | レジスタ幅 |
| register/ˈredʒɪstə/ | レジスタ |
| BCD/ˌbiː siː ˈdiː/ | BCD |
| overflow/ˌəʊvəˈfləʊ/ | オーバーフロー |
| most significant bit/məʊst sɪɡˈnɪfɪkənt bɪt/ | 最上位ビット |
1.1
Binary arithmetic
Binary addition
Add column by column from the right, carrying as in denary:
| ビット A | ビット B | 入力 Carry | 和ビット | 出力 Carry |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 1 | 0 |
| 0 | 1 | 0 | 1 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 | 1 |
オーバーフローとは、結果に必要とするビット数がレジスタが保持できる数を超過する場合を指します——左端の列からの出力 Carry がオーバーフロー・ビットとなります。
** worked example.** 8ビットの無符号整数$10110101$と$01101100$を加算し、結果についてコメントしてください。
$10110101 + 01101100 = 1\,00100001$. 答えには9ビットが必要であるため、8ビットレジスタに収まりません:オーバーフローが発生しました。完全な回答では、問題で与えられたビットサイズを用いてエラー名と理由を述べる必要があります。「オーバーフロー:真の結果($289$)は、8ビットレジスタが保持できる最大値($255$)よりも大きいため、最上位ビットからの持ち出しが失われ、格納された結果($00100001 = 33$)が誤りとなる」。
二進減算
通常の手法は**補数(two's complement)**による加算です。$A - B$を行うには、まず$B$の補数を形成し(各ビットを反転して1を加える)、次に加算を行い、最終的な持ち出しは破棄します。
$00011110$から$01100100$を引く場合(符号なし8ビット):
- $00011110$の補数:反転 → $11100001$、1を加える → $11100010$。
- $01100100$に加算する:結果 $1\,01000110$(9ビット)→ 先頭の1を破棄 → $01000110 = 70_{10}$。検証:$100 - 30 = 70$。 ✓
補数符号付整数
$n$ビットの補数数において:
- 最上位ビット(MSB) は 符号ビット です:0 = 正、1 = 負。
- 負の数の読み取り方:各ビットを反転し、1を加えた後、符号を反転させる。
したがって $11100010$ は負です;反転 → $00011101$、1を加える → $00011110 = 30$、よって値は $-30$ です。これは 符号付き整数 であり、符号なし のものではありません。$n$ ビットでの範囲は $-2^{n-1}$ から $+2^{n-1} - 1$ までです;8ビットの場合、$-128$($10000000$)から $+127$($01111111$)までです。
同じビットパターンでも、合意された読み取り方によって異なる数値を表します。符号なし 整数として解釈する場合、すべてのビットが位値となるため、8ビットでは $0$ から $255$ までの範囲となります。符号付き 補数整数として解釈する場合、最上位ビットが符号となるため、同じ8ビットでは $-128$ から $+127$ までの範囲となります。パターンの $11111111$ は、ある読み取り方では $255$、別の読み取り方では $-1$ となります——ビット自体にはどちらかを示す情報は含まれていません。
符号なしおよび符号付きとして読み取った同一のバイト:区別するのは合意された解釈のみ
8ビット補数:符号ビットが範囲を負($-128$ から $-1$)と正($0$ から $127$)に分ける
演習例。 8ビット補数数 ⟨$10110100$⟩ が表す十進値はいくつですか?
MSBは1なので負です。反転 → $01001011$、1を加える → $01001100 = 76$、よって値は $-76$ です。位値による検証:$-128 + 32 + 16 + 4 = -76$。
演習例。 $-108$ を12ビット補数整数として書きなさい。
12ビットにおける $+108$ から始める:$108 = 64 + 32 + 8 + 4$、よって 0000 0110 1100 です。各ビットを反転:1111 1001 0011。1を加える:1111 1001 0100。位値による検証(最上位ビットの値が $-2^{11} = -2048$ ):$-2048 + 1024 + 512 + 256 + 128 + 16 + 4 = -108$ 。 ✓
For 12 bits the range is $-2048$ (1000 0000 0000) to $+2047$ (0111 1111 1111). Questions that ask for the smallest and largest values want these two patterns, so learn the rule: the most negative number is a 1 followed by zeros; the most positive is a 0 followed by ones.
算術シフト はすべてのビットを左または右に移動させつつ符号を維持します。1桁右シフトすると値は半分になり、空いた左側のスペースに符号ビットがコピーされるため、負の数は負のままになります(1111 1001 0100 を3桁右シフトすると 1111 1111 0010 となり、これは $-14$ :$-108 / 8 = -13.5$ 、右シフトは切り捨てとなります)。左シフトすると値は倍になります。シフト操作はトピック4のアセンブリ命令セットに含まれますが、この問題は本セクションの数値計算に関連して出題されます。
符号付き算術におけるオーバーフローは、真の結果がこの範囲外に落ちたときに発生します。符号ビットが誤って反転した時に検知されます(2つの正の数が負になる、あるいは2つの負の数が正になる場合)。
1の補数
補数以前に存在した古い方式である1の補数では、負の数を正の数の各ビットを単に反転することで表現しました。「1を加える」ステップはありません。
- $+30 = 00011110$ なので、1の補数では $-30 = 11100001$ (単純な反転のみ)。
- 欠点: ゼロが2つ存在する — $00000000$ ($+0$) と$11111111$ ($-0$) — ため、ビットパターンの無駄となり、計算操作が煩雑になる。
補数(反転して1を加える)は負の0を取り除き、単一の0を持ちます。これにより加算と減算に同じ回路を使用できます。そのため、現代のコンピュータは符号付き整数を1の補数ではなく補数で格納しています。
二進数 & 符号付き整数
byte = Σ 桁の値
8ビットのパターンがどのように数値にマッピングされ、255を超えてオーバーフローするかを確認してください。
2の補数による符号付きビット
左端のビットは負の位値を持ちます。どのビットでも反転させるか、Negate(すべてのビットを反転させてから1を加える)をクリックすると、符号付き値の変化を見ることができます。
| English | 日本語 |
|---|---|
| denary/ˈdiːnəri/ | 十進法 |
| unsigned/ʌnˈsaɪnd/ | 符号なし |
| two's complement/tuːz ˈkɒmplɪmənt/ | 補数 |
| signed integer/saɪnd ˈɪntɪdʒə/ | 符号付き整数 |
| sign bit/saɪn bɪt/ | 符号ビット |
| arithmetic shift/ˌærɪθˈmetɪk ʃɪft/ | 算術シフト |
| one's complement/wʌnz ˈkɒmplɪmənt/ | 反転数 |
| 7-segment display/ˈsevən ˈseɡmənt dɪˈspleɪ/ | 7セグメントディスプレイ |
| memory address/ˈmeməri əˈdres/ | メモリアドレス |
| code point/kəʊd pɔɪnt/ | コードポイント |
| character set/ˈkærɪktə set/ | 文字集合 |
| encoding/enˈkəʊdɪŋ/ | エンコーディング |
1.1
BCD(バイナリーコードドデシマル)
BCD では、各十進数字は独自の4ビットパターンで書かれます。数 ⟨$93$⟩ はBCDでは 1001 0011 であり、二進数93($01011101$)ではありません。各ニブルは0〜9のみを使用し、パターン $1010$〜$1111$ は無効です。
BCDの読み取り:0010 0111 0101 → 2, 7, 5 → 275。
用途:電卓、デジタル時計、十進数字を表示するデバイスなど。各数字は7セグメントディスプレイを駆動します。通貨コードは0.1のような分数を二進に変換する際の丸め誤差を避けるために、しばしばBCDを使用します。
"justify(正当化)" 回答では、用途とBCDの性質を結びつける必要があります:各十進数字には独自の4ビットがあるため、数字をそのままディスプレイに送ったり、数字単位で加算したりでき、全体の変換が不要です。また、$0.10$ などの小数は正確に格納可能ですが、二進小数では不可能です。

1.1
ヘキサデシマル — 実用的な用途
ヘキサデシマルは二進数をコンパクトに表す方法です(ヘキサデシマル1桁 = 4ビット):

- 低レベルプログラミングにおけるメモリアドレス —
0x7FFE。 - カラー値 in HTML/CSS —
#FF8800。 - MACアドレス —
AC:DE:48:00:11:22。
ヘキサデシマルは保存されているデータを変化させません。ただ、人間が読みやすいように二進数を表すだけである。
1.1
キャラクターコード
コンピュータはテキストを数値として保存します。各文字には、文字セットによって設定された数値のコードポイントがあります。
ASCII
- ASCII は7ビットを使用し、128個のコードポイントを持ちます。基本ラテン語アルファベット、数字、記号、および制御コードが含まれます。
- 拡張ASCII は8ビットを使用し、256個のコードポイントを持ちます。下位128はASCIIと一致し、上位128は地域によって異なります。

ニコード
- ユニコード は、ほぼすべての書体、記号、絵文字を網羅する国際的な文字セットです。
- 一般的なエンコーディング: UTF-8 (1〜4バイト、ASCII互換)、UTF-16 (2または4バイト)、UTF-32 (固定4バイト)。
アスキーよりユニコードが優れる理由
- はるかに多くの文字を表すことができ(あらゆる書体、絵文字)、アスキーは基本英語のみをカバーしています。
- ファイルはポータブルであり、コードページによる混乱がなく、1つの文書に多言語テキストを許容します。
- トレードオフ: 英語のみテキストの場合、ユニコードファイルは通常大きいです。
問題で違いを問われている場合、数値付きの対として答える: ASCIIは7ビット(拡張ASCIIは8)を使用するため、128 (256)文字; Unicodeは最大32ビット(UTF-8は1から4バイト)を使用するため、百万を超えるコードポイントがある。ASCIIは基本的な英語のみをカバーし、Unicodeはすべての文字体系をカバーし、その最初の128個のコードポイントはASCIIのものである。UTF-8では、英語の文字Still taking 1 byte, so a 40-letter English file name is 40 bytes in ASCII and in UTF-8 alike, while a Chinese character takes 3 bytes.
文字は数値として格納される
Each character has a code number — 'A' is 65. Flip the bits to see that code in binary and hex, exactly how the computer holds it.
1.2
ビットマップ画像
シラバス
| 受験者は以下的能力を備えているべきである: | メモおよびガイドライン |
|---|---|
| ビットマップ画像のデータエンコーディングを理解する | 用語:ピクセル, ファイルヘッダ, 画像解像度, スクリーン解像度, カラー深度 / ビット深度 を理解して使用する |
| ビットマップ画像のファイルサイズを推定するための計算を行う | |
| ビットマップ画像の要素の変更が画像品質およびファイルサイズに与える影響を理解する | 用語:画像解像度, カラー深度 / ビット深度 を使用する |
| ベクターグラフィックのデータエンコーディングを理解する | 用語:描画オブジェクト, プロパティ, 描画リスト を使用する |
| 特定のタスクに対して ビットマップ画像 または ベクターグラフィック を使用すべき理由を正当化できる | |
| サウンドの表現およびエンコーディングを理解する | 用語:サンプリング, サンプリングレート, サンプリング分解能, アナログ, デジタルデータ を使用する |
| サンプリングレート および 分解能 の変更が与える影響を理解する | ファイルサイズおよび精度への影響を含む |
出典: Cambridge International シラバス
ビットマップ画像(ビットマップ化された画像とも呼ばれる)は、グリッド上の各ピクセルの色を格納します。ファイルの先頭にあるファイルヘッダーには、画像のメタデータ(幅、高さ、色深度)が記録されており、ソフトウェアがそれに続くピクセルデータを正しく読み込めるようになります。
- 画像解像度: ビットマップ自体のサイズ、ピクセル単位の横幅×縦幅(例:1920 × 1080)。
- スクリーン解像度: ディスプレイが表示できる横幅×縦幅。画像の解像度が画面より大きい場合は縮小され、低解像度の画像を高解像度画面に拡大すると角ばって見えます。
- カラー深度(ビット深度):ピクセルあたりのビット数。1ビット → 白黒;8ビット → 256色;24ビット → 16.7百万(「トゥルーカラー」)。

ファイルサイズ
8で割るとバイト、1024で割るとKiBなどになります。例:一幅 $3000 \times 2000$ 画像が24 bppの場合、$3000 \times 2000 \times 24 = 1.44 \times 10^{8}$ bits $\approx 17.2\ \text{MiB}$。

使用した単位を明記してください。採点基準では、計算過程がどちらかを示していれば$1\ \text{MB} = 10^{6}$ バイト(SI接頭辞)または$1\ \text{MiB} = 1024 \times 1024$ バイト(バイナリ接頭辞)の両方を認めます。同一の画像は$18.0\ \text{MB}$ または$17.2\ \text{MiB}$ です。問題にファイルヘッダーのサイズが与えられている場合は加算してください。
動画は、それぞれ1枚のフレームからなるビットマップ画像の連続です。圧縮される前のサイズは、1フレームのサイズ $\times$ フレームレート(秒あたりのフレーム数) $\times$ 秒単位の再生時間です。秒あたり30フレーム、$1920 \times 1080$ ピクセル、24ビットの場合、$30 \times 1920 \times 1080 \times 24 \approx 1.5 \times 10^{9}$ bits、おおよそ$187\ \text{MB}$ となり、これが動画が常に圧縮される理由です。
設定の変更
- 解像度を下げる → ファイルサイズが小さくなり、ディテールが減少(拡大すると角張って見える)。
- 色深度を下げる → ファイルサイズが小さくなるが、滑らかなグラデーションにバンドinga(帯状のノイズ)が生じる。
- どちらかを上げる → ファイルサイズが大きくなり、画質が向上する。
| English | 日本語 |
|---|---|
| bitmap/ˈbɪtmæp/ | ビットマップ |
| pixel/ˈpɪksl/ | ピクセル |
| file header/faɪl ˈhedə/ | ファイルヘッダ |
| colour depth/ˈkʌlə depθ/ | 色深 |
| image resolution/ˈɪmɪdʒ ˌrezəˈluːʃn/ | 画像解像度 |
| screen resolution/skriːn ˌrezəˈluːʃn/ | 画面解像度 |
| bit depth/bɪt depθ/ | ビット深度 |
| frame/freɪm/ | フレーム |
1.2
ベクトルグラフィックス
ベクトルグラフィックは、画像を描くための命令を描画リストとして格納します。これは、描画オブジェクト(幾何学的プリミティブ:線分、曲線、多角形、円)の順序付けられたリストです。各描画オブジェクトには、色、塗りつぶし、線の太さ、位置(座標)などのプロパティがあります。表示する際、プログラムは必要な解像度で描画リストをレンダリングします。

ビットマップ vs ベクトル
| タスク | より適切な選択 | 理由 |
|---|---|---|
| 写真 | ビットマップ | 複雑なピクセル単位のディテールは形状として記述できないため。 |
| ロゴ、アイコン、看板 | ベクトル | 鋭利なエッジ;どんなサイズにもスケール可能でぼやけない。 |
| 技術図面 | ベクトル | 正確な幾何学構造とスケール性。 |
| 絵画、テクスチャ | ビットマップ | 領域ごとの滑らかなトーンディテール。 |
ベクトルの利点: 品質を損なわずにスケール可能であること。ベクトルロゴはどんなサイズでもシャープなままだが、ビットマップは拡大するとぼやける。ベクトルの欠点: 任意のピクセルディテール(写真など)を記述できないこと。
"justify"(正当化)の回答は、選択肢とタスクの関連性を説明する。「ロゴは名刺にも看板にも表示される必要があるため、ベクター図形であるべきである。ベクター図形は描画オブジェクトとして保存され、あらゆるサイズでシャープに再描画されるが、ビットマップは拡大するとピクセルが目立ってしまうからだ。」一方で、写真については逆の論理となる:形状を記述する必要がないため、各ピクセルの色をすべて保存しなければならない。

コンピューティング概念ラボ
具体的な例を、それが示すコンピューティングのアイデアに基づいて分類せよ。
| English | 日本語 |
|---|---|
| vector graphic/ˈvektə ˈɡræfɪk/ | ベクター図形 |
| drawing list/ˈdrɔːɪŋ lɪst/ | 描画リスト |
| drawing objects/ˈdrɔːɪŋ ˈɒbdʒekts/ | 描画オブジェクト |
| primitive/ˈprɪmɪtɪv/ | プリミティブ |
| properties/ˈprɒpətiz/ | プロパティ |
| render/ˈrendə/ | レンダリング |
| analogue data/ˈænəlɒɡ ˈdeɪtə/ | アナログデータ |
| digital data/ˈdɪdʒɪtl ˈdeɪtə/ | デジタルデータ |
1.2
サウンド
アナログデータ(音)の連続的な波は、サンプリングによってデジタルデータに変換されます:
- サンプリングレート — 秒あたりのサンプル数(Hz)。CD品質は$44.1\ \text{kHz}$です。
- サンプリング解像度(ビット深度) — サンプルあたりの振幅に対するビット数。CD品質は16ビットです。

ファイルサイズ
10秒間のステレオCDクリップ:$44100 \times 16 \times 10 \times 2 = 14\,112\,000$ ビット $\approx 1.68\ \text{MiB}$。
設定の変更
- 高いサンプリングレート → 高い音域を捉えられ、ファイルサイズが大きくなります。
- 高いサンプル解像度 → 微細な振幅ステップが可能になり、量子化ノイズが減り、ファイルサイズが大きくなります。
- どちらか低い場合 → ファイルサイズは小さく、明確な音質の低下が生じます。
(The sampling rate must be at least twice the highest frequency you want to keep.)

音声サンプリング
y = a sin(bt + c)
サンプリングは一定間隔で音波を測定し、高いレートで測るほど忠実にコピーできる。
| English | 日本語 |
|---|---|
| sampling/ˈsæmplɪŋ/ | サンプリング |
| sampling rate/ˈsæmplɪŋ reɪt/ | サンプリングレート |
| sampling resolution/ˈsæmplɪŋ ˌrezəˈluːʃn/ | サンプリング解像度 |
| amplitude/ˈæmplɪtjuːd/ | 振幅 |
| sample resolution/ˈsæmpl ˌrezəˈluːʃn/ | サンプリング分解能 |
| quantisation/ˌkwɒntaɪˈzeɪʃn/ | 量子化 |
| bandwidth/ˈbændwɪdθ/ | 帯域幅 |
1.3
コマ圧縮
シラバス
| 受験者は以下的能力を備えているべきである: | メモおよびガイドライン |
|---|---|
| 圧縮 が必要な理由およびその使用例を理解する | |
| 可逆圧縮 および 非可逆圧縮 を理解し、特定の状況での手法選択を正当化できる | |
| テキストファイル、ビットマップ画像、ベクターグラフィック、サウンドファイルの圧縮方法を理解する | RLE (run-length encoding) の使用を含む |
出典: Cambridge International シラバス
圧縮はファイルサイズを削減し、ストレージと転送用帯域幅の節約につながります。2つの種類があります:
- 可逆圧縮 — 元のデータを正確に復元できる(テキスト、プログラム、ZIP/PNGなど)。
- 不可逆圧縮 — 大幅なファイルサイズ削減のために一部の詳細を削除する(JPEG、MP3、動画など)。
使い分け
- 可逆圧縮:文書、ソースコード、医療画像など、正確なデータの保持が必要なもの。
- ストリーミングメディアに対しては可逆圧縮不可(ロス圧縮)。リアルタイム動画ストリーミングは限られた帯域幅でリアルタイムに膨大なデータを送信しなければならないためロス圧縮を使用します。可逆圧縮では十分な圧縮率を得られず、生HD動画は分あたりギガバイト単位であるため、圧縮がないと映像が頻繁にフリーズしてしまいます。
"justify"(理由を述べる)の答えは、まず手法を挙げ、次に状況からの理由を示す: 「Lossless(無損圧縮)、なぜならスプレッドシートを正確に復元する必要があるからであり、単一の値が変わっただけで帳簿が誤ったものになってしまうから」。または: 「Lossy(有損圧縮)、なぜなら写真が電話画面で見られる際に失われた詳細は不可視であり、ファイルサイズが小さくなることでアップロードが速く、ストレージ消費も減らすから」。」
可逆圧縮手法
- ラン長符号化 (RLE): repeating $x$ を繰り返す代わりに "次の $n$ の値は $x$ です" と記録する。平坦な領域には最適だが、ノイズのあるデータには無効。
- 辞書方式 (ZIP, PNG):繰り返し出現するバイトシーケンスを短い参照コードに置き換える。テキストやコードに適している。
- ハフマン符号化:頻出するシンボルに短いコード、稀なシンボルに長いコードを与え、平均コード長をデータのエントロピーに近づける。
各種類のファイルの圧縮方法:
- テキストファイル:辞書方式とハフマン符号化により、重複する単語や一般的な文字を短いコードに変換する。テキストは1文字変わっても意味が変わるため、必ず可逆圧縮とする。
- ビットマップ画像:同じピクセルの連なりに対してRLE(アイコン、図表、白黒スキャン)、写真に対して不可逆圧縮のJPEG、または色深さ・解像度の低さを用いる。
- ベクター図形:描画リスト自体が小さいため、不要な描画オブジェクトを除去するか、座標の小数点以下の桁数を減らすか、ZIPなどの可逆圧縮手法を適用する。
- 音声ファイル:不可逆圧縮のMP3やAACは耳に聞こえない成分を削除する。サンプリングレートや解像度を下げることも不可逆圧縮となる。可逆圧縮形式はすべてのサンプルを保持するため、ファイルサイズの削減率は低い。
*単一行におけるラン長符号化:16ピクセルが3つの連なりに変換される
*$8\times8$ の白黒グリッド内にある字母Fのラン長符号化


不可逆圧縮手法
- 画像 (JPEG):目がほとんど見分けられない微細な詳細や色の違いを削除する。
- 音声 (MP3, AAC):耳の感度が低い音域や、より大きな音量に隠れて聞こえない静かな音を削除する。
- 動画は、空間的圧縮(各フレーム内、JPEGのような手法)と時間的圧縮(ほとんどのフレームは前フレームとの差分のみを記録)を組み合わせたもの。

論理シフトと算術シフト; IPアドレスのサイズ
論理シフトでは、ビットパターンそのものが移動し、空いた位置は 0 で埋められます。2の補数整数に対する右算術シフトでは、符号ビットが新しい左端の位置にコピーされます。8ビットの 11110100 (−12) において、2つ右論理シフトすると 00111101 (61) となり、2つ右算術シフトすると 11111101 (−3) となります。破棄されるビットは失われ、オーバーフローや丸め誤差のため、シフト操作が正確な掛け算や割り算として振る舞わないことがあります。
An IPv4 address has 32 bits, often shown as four eight-bit decimal groups. An IPv6 address has 128 bits, usually shown as eight groups of four hexadecimal digits before permitted abbreviation. These are address lengths, not numbers of characters in the printed address.
ランルースエンコーディング
連続する記号の列がカウントに圧縮される様子を見てください。これは単純な可逆圧縮です。
| English | 日本語 |
|---|---|
| compression/kəmˈpreʃn/ | 圧縮 |
| frame rate/freɪm reɪt/ | フレームレート |
| lossless/ˈlɒsləs/ | 無損 |
| lossy/ˈlɒsi/ | 有損 |
| run-length encoding/rʌn leŋθ enˈkəʊdɪŋ/ | ラン長符号化 |
| dictionary methods/ˈdɪkʃənəri ˈmeθədz/ | 辞書符号化 |
| Huffman coding/ˈhʌfmən ˈkəʊdɪŋ/ | ホフマン符号化 |
| entropy/ˈentrəpi/ | エントロピー |
| spatial/ˈspeɪʃl/ | 空間的 |
| temporal/ˈtempərəl/ | 時間的 |
1.3
出題者が認める定義
定義問題は固定された用語に基づいて採点されます。これらを正確に暗記し、一つの答えのみを答えてください。
| 用語 | 定義 |
|---|---|
| bit | 単一の二進数桁(0または1) |
| byte | 8ビットのグループ |
| 二進数接頭辞 | 10の累乗(キロ=1000)ではなく2の累乘(キビ=1024)である倍率 |
| 2の補数 | 符号付き整数を表す方法で、最上位ビットが負の位値を持つもの |
| オーバーフロー | 計算結果が利用可能なビット数では表現できないほど大きいこと |
| 二進符号化十進数 (BCD) | 各十進数字は独自の4ビットのバイナリパターンとして保存される |
| キャラクターセット | コンピュータが表現できる文字の集合体で、それぞれ固有の二進コードを持つ |
| ピクセル | ビットマップ画像の最小単位であり、1つの色値を格納する |
| イメージ解像度 | 画像内のピクセル数。幅×高さで表される |
| スクリーン解像度 | ディスプレイが表示できるピクセル数。幅×高さで表される |
| カラーディプス | 1ピクセルの色を格納するために使用されるビット数 |
| sampling rate | the number of samples of the sound taken per second |
| サンプル分解能 | 1サンプルの振幅を格納するために使用されるビット数 |
| 損失なし圧縮 | 元のデータを完全に復元できる圧縮 |
| 損失あり圧縮 | 一部のデータを永久的に削除するため、元のデータを復元できない圧縮 |
| ラン長エンコーディング | 連続した同じ値の列を1つの値とカウント値に置き換える |
1.3
試験対策
- 進数変換の計算過程を示す: 十進数→バイナリは位取りによって、バイナリ→十六進数はニブル(4ビットのグループ)によって行なう。
- 2の補数ではMSBが負;逆算するには反転して1を加える;符号ビットが誤って切り替わった際のオーバーフローに注意。
- ビットマップ(ピクセル;ファイルサイズ $=$ 幅 $\times$ 高さ $\times$ カラーディプス)とベクトル(描画コマンド;損失なく拡大可能)を区別する。
- 音声ファイルサイズはサンプルレート $\times$ ビット深さ $\times$ 時間に依存する。各要素が増えれば品質は向上するが、ファイルも大きくなる。
- ロスレス圧縮とロス圧縮を比較し、それぞれの用途を述べる。
一般的なミス
- 「答えが255より大きかった」や「9ビットになった」という言葉でオーバーフローを説明する。問題で指定されたワードサイズを明記し、その中では結果を表現できないと述べる。
- 最上位ビットを1にし残りをそのままにして負の数字を作る(符号と絶対値方式)。2の補数では正の値のすべてのビットを反転し、1を加える。
- 問題で求められたレジスター幅まで変換後の数にパディングを施すのを忘れる。
- ファイルサイズの計算でビットとバイトを混同すること。ビット単位で計算し、最後に8で割り、1000か1024を使用したかを明記せよ。
- 「写真の画質が悪くなる」など日常的な言葉で「説明せよ」に答える。カリキュラムの用語を使う:色の数が減る、帯状のノイズ(バンド)、解像度が下がる、ピクセルが大きくなる。
このトピックのインタラクティブ授業
一歩ずつ進め、即時チェック付きの問題で学習します。