【コンピュータの仕組みを知る上での基礎知識】
以下の内容が理解できれば、貴方もコンピュータ通の仲間入り! n進法演算とは(2進、8進、10進、16進)
私たちが何気なく使用している10進数は、コンピュータの世界にとっては極めて扱い にくいものなのです。ご存知の通り、このn進数とは上の桁に桁上がりする単位を表して いるだけで、論理的には全て同じ考え方で扱われます。 では、10進数を含め、2進数、8進数、16進数とはどのようなものか、演算はどのよ うに行うのかについて見てみましょう。 【2進数演算とは】 2で上位の桁に桁上がりする数値で、0か1のみで表現されます。例えば、2進数の“0 11”(21+20=3)と“001”(20=1)を加えた場合、最下位の数値が2となり上 の桁に桁上がりします。その結果数値は“100”(22=4)となります。 【8進数演算とは】 8で上位の桁に桁上がりする数値で、0から7までの数値で表現されます。例えば、8 進数の“077”(81*7+80*7=63)と“001”(80*1=1)を加えた場合、最 下位の数値が8となり上の桁に桁上がりします。その結果数値は“100”(82=64)と なります。 【10進数演算とは】 10で上位の桁に桁上がりする数値で、0から9までの数値で表現されます。例えば、 10進数の“099”(102*9+100*9=99)と“001”(100*1=1)を加え た場合、最下位の数値が10となり上の桁に桁上がりします。その結果数値は“100”(1 02*1=100)となります。 【16進数演算とは】 16で上位の桁に桁上がりする数値で、0から15までの数値(AからFまでの英字で、F が15を表します)で表現されます。例えば、16進数の“0FF”(161*15+160 *15=255)と“001”(160*1=1)を加えた場合、最下位の数値が16となり 上の桁に桁上がりします。その結果は“100”(162=256)となります。 では何故コンピュータが2のべき乗進数(一般的には2進数、16進数)を採用しているかと言いますと、これはコンピュータの内部仕組みからくる都合からでしかありません。 コンピュータは内部動作上、全てのデータを0(OFF)か1(ON)の数値の塊で表現 しています。これを数値的に並べてみると以下のようになります。 11111111 =27+26+・・・+20=255 この各々の数値(0か1)を表現している各々をビットと呼んでいます。このビットを 3ビットずつ分割したのが8進数であり、4ビットずつ区切ったのが16進数です。(3ビ ットでは8進数の最大値である7が表現でき、4ビットで16進数の最大値である15(F) が表現できます) 昔は8進数も使われていましたが、コンピュータのデータが通常は8ビットの倍数単位で 表現されている関係で、3ビットは都合が悪いために、16進数が定着しました。
文字コードとは、またフォントとの関係は
文字コードとは、英数字や日本語をどのようなビットパターン(コード)で表現するか を規定したもので、フォントはその文字をどのような書式で描画・印刷するかを定義した ものです。この文字コードやフォントには様々なものがありますので、外部とのデータの やり取り等を行う場合は使用する文字コードやフォント(特に文字コード)を意識する必 要があります。 文字コードの主なものにはASCII,JIS,S-JIS、EUC、Unicode等があります。ASCIIは英字 と特殊文字のみ扱える8ビット長のコードです。また、汎用コンピュータで使用される EBCDICと言われるものもあります。 上記にあげたASCIIコード及びEBCDICコード以外は全て日本語が使える文字コードで、パ ソコンの場合はShiftJISが使われています。 EUCコードはUNIX用(OS)コードで、2~3バイトで表現され日本語も使うことができま す。Unicodeは日本語を含む世界の文字を全て表現した統一化した2バイトの文字コードで、 これからの標準コードとして広く使われています。 仮に、作成された文字コードと異なるコードで読み込もうとした場合、文字化けと言わ れる解読不能な文字で表示されることになります。これは、文字を表すコード(ビットパ ターン)が異なることにより発生します。例えば、“XXXXX”という文字は、ASCIIでは”YYYY” と表現され、EUCでは“ZZZZ”と表現されているからです。(”XXXX”,“YYYY”,”ZZZZ”は各々異な るという意味です)但し、通信における制御コード(Enq,Ack,Nack等のようなコード)と して使用されるコードは基本的には#00~#1Fに統一されています。但し、全く同じ制御コードで定義されている訳ではありません。 文字フォントとは明朝とか、ゴシックと言われているものです。 また、個々のフォント(文字)を表現する仕組みとしてビットマップフォントとアウトラ インフォントがあります。前者のビットマップフォントは、文字を画像同様にドット(最 小の点)により表しているフォント(例えば16x16ピクセルのメッシュ上の対応する ピクセルを塗りつぶすことにより文字を描いている)で拡大等を行うと拡大処理の影響に よりギザギザとなる欠点があります。 後者のアウトラインフォント(トルータイプ)は、フォントをベクトル座標として輪郭 線で表しますので、拡大しても綺麗に表示することができます。 補足: 主な文字コード EBCDIC:ExtendedBinaryCodedDecimalIjnterchangeCod IBM社がSYSTEM/360と同時に発表した8ビットコードであり、256種の文字 を表現できます。尚、このコードは汎用コンピュータに採用されています。 Unicode: ISO/IEEE10646のBMP(BasicMultilingualPlane)として採用され、パソコ ンでのデータ交換を円滑にすることを目的として作られたコードです。 EBCDIK:ExtendedBinaryCodedDecimalInterchangeKanacode JisX0208で定められた漢字コードの規格であり、2バイトを1文字で表す2 バイトコードを使っています。費用頻度を考えて第1水準と第2水準に分けて います。 シフトJISコード: JIS漢字コード体系を変換したもので、英数カナコードと混在して区別できま す。パソコンのワープロ等で広く使われています。
数値を扱う様々な方法(整数、固定小数点、浮動小数点)
コンピュータ内部で数値を扱う場合、扱う数値の大きさに応じて8ビット、16ビット、 32ビット、或いは64ビット単位で扱います。いずれの場合も符号付数値として処理を 行う場合は最上位を符号ビットとして扱います。(最上位ビットが0の場合はプラス、1 の場合はマイナスと定義されます) 例えば8ビットの場合を想定しますと、プラスの最大値を2進数で表現しますと“011 11111”となります。これは、26+25+・・・+20となりますので、10進表現で127となります。 また、マイナスの場合は“11111111”がー1を表し、“10000000”がー12 8を表します。(“11111111”をー1と表現しているのはコンピュータの演算上の都 合です。マイナスの表現する場合、2進数でプラスで表現し、各値を0/1反転させ、そ の結果に1を加えるという補数方式で負の値を表現しています。これがコンピュータには 都合が良いのです。その結果、8ビットで表現できる符号付数値はー128から+127 まで表現出来ることになります。 また、小数点を表現する方法として固定小数点方式と浮動小数点方式があります。固定 小数点の場合は何番目のビットを固定小数点にするかを決めて処理を行います。例えば第 2ビットと第3ビットの間に固定小数点を置いたとした場合、以下となります。 00000011 上記では、小数点位置から右側に向かって2-1、2―2とみます。 上記例では2―1と2―2の総和が小数点以下の値となります。 つまり、0.5+0.125=0.725となります。 また浮動小数点表現に関しては、規格の違いやメーカの違いにより表現は異なりますが、 どの場合でも符号、指数、及び仮数を使って表現しています。違うのはこの指数、及び仮 数の表現方法が違うことです。以下に最も一般的と思われるIEEE方式について紹介します。 IEEE形式の32ビット表現方式(64ビット形式もあります)は、符号1ビット、指数部 8ビット、仮数部23ビットでの合計32ビットで表現されます。例えば、10進数の3. 625は2進数で以下に表現できます。 11.101(2) =21+20+2-1+2-3 上記2進数を最初に現れる2進数1で表現すると以下と分解されます。 1. 1101*21 上記の仮数部(1.1101)を(1.000)で正規化します。 1.1101-1.000 =0.1101 21の指数部を+127することにより正規化します 21+127 =2128 上記の結果、3.625の32ビット浮動小数点表現は以下となります。 (-1)s x 2E-127 X (1+F) ・・・展開式 (-1)0 x 2128-127 x (1+0.1101) = 1 x 21 x 1.1101 = 11.101 = 3.625 結局、浮動小数点とは小数点の位置がどこにあろうとも小数点の位置を固定として表現し、 実際の小数点の位置を指数部分で表現する方式であり、この方式により表現できる有効桁 数を大きくしているのです。 補足1:
汎用コンピュータであるIBMコンピュータの浮動小数点表現はIEEE規格とは異な り、32ビットの場合の浮動小数点表現は、基数を16とし(2nの代わりに16nとして います)、以下のビット配分にて表現されます。 S 指数(7ビット) 仮数(24ビット)
画像の保存形式
画像を外部記憶装置等に保存する形式にはいろいろありますが、それぞれの方法及び特 質は異なりますので注意して使用しなければならなりません。パソコンの世界で最も一般 的なJpeg形式は24ビットフルカラー(1776万色)で表現していますが、画像の占め るデータの大きさを尐なくする為に圧縮(コサイン関数を使用)を前提としており、しか も可逆ではありませんので原画像を正確には再現(元の状態には戻せない)できない問題 があります。但し、圧縮率の高い圧縮方式を採用していますので画像のサイズはJpeg以外 の形式と比較し極めて小さくなります。 また、アニメーション等で使用されるGif形式は、カラー諧調が256色までしか表現で きない形式ではありますが、可逆圧縮方式を採用していますので、完全復元(元の状態に 戻せる)が可能となります。Gifが256色しか扱えない問題を解消する為にGifの拡張方 式としてPng形式という形式も考えられています。 画像圧縮の場合、一般的には逆圧縮(完全に再現可能な圧縮方式)方式としてハフマン コード圧縮が採用されています。これは発生頻度の高いデータを尐ないビットに置き換え る方式(コード化する)です。大量の画像を扱う医用の世界では、画像診断を目的として いる関係で画像劣化は致命的となりますので、圧縮する場合は可逆が必須となります。医 用分野では画像の前後のピクセル間で差分を取り(プロファイル上は滑らかに変化するの で、差分結果がゼロに近づく傾向があります)、その結果から上記ハフマンコード圧縮を 行うことにより、より高い圧縮率を実現しているメーカもあります。圧縮した場合の効果 として、格納スペースの有効利用、格納速度の高速化、ネットワーク転送の高速化等が上 げられますが、圧縮された画像を扱う場合にいちいち展開するという手間が入る為に大量 の画像を扱う場合には大きなパフォーマンス劣化が発生します。この対応として、圧縮/展 開を転送(保存含)のタイミング等でハード的に行う場合もありますが、それでも多尐の パフォーマンス劣化は免れません。 外部記憶装置の容量や速度の問題、及び通信速度の問題がなければ余計な処理を必要とし ない非圧縮形式が最も効率が良く、扱いやすい画像データとなります。 アナログとディジタルの違い
アナログの場合、一般的に最も理解しやすいアナログ回線を使った信号伝播を見てみま すと、伝播される信号は、その強度に応じて電圧に変換されて伝播されます。つまり、電 圧の大きさが信号そのものと言えます。この方式では、回線上で外部要因によりノイズが 発生し、伝播される信号に重なった場合、それがノイズなのか、信号なのかを判断するこ とは出来ません。 これに対して、ディジタルとは、連続したアナログ信号(電圧の変化)を一定間隔で測 定し、数値化(サンプリング)し記録したものです。このディジタルデータを伝播する場 合は、2進数として、最大電圧(ON)と最小電圧(0FF)の組み合わせで伝播します。こ の方式であれば、回線上を伝播する信号には、最大電圧(範囲)と最小電圧(範囲)しか ありませんので、多尐のノイズの影響により信号が劣化しても、受信側あるいは、中継地 点(交換機など)で正しい信号に復元することができます。また、送信する側と受信する 側で、転送単位毎にエラーチェック(パリティーチェックなど)などの仕組みを行うことによ り、送信されたデータと受信されたデータが同じであるか否かを判断することができます。 また、チェックの仕組みによっては、修正もできます。 ディジタル回路の代表と言えるコンピュータは、0と1の信号の組み合わせで構成され る各種のデータを理解することにより、命令を実行したり、各種の制御を行います。 基本的には、ディジタル回路は、この0(OFF)か1(ON)だけを扱う電子回路のことを 言います。通常のディジタル回路では、この電圧の高い、低いを“1”と“0”に対応させてい ます。電圧の高いほうを“1”に対応させ、低いほうを“0”と対応させているのが正論理であ り、これに対して、低いほうを“1”とし、高いほうを“0”とするのが負論理です。どちらの 論理で回路を設計するかは、回路の特性などに応じて決めます。 但し厳密には、ディジタル回路だからと言って、その回路上の信号が全てディジタル化 されて伝播される訳ではありません。ディジタル回路の中にも、アナログ信号を扱うアナ ログ素子(抵抗やコンデンサ、及びトランジスタなど)が多数使用されます。つまり、デ ィジタル回路上にも用途に応じてアナログ信号が流れています。このアナログ信号を2値 化してONかOFFかを判断する処理や、アナログをディジタルに変換する処理(A/D変換)、 及びディジタル信号をアナログに変換する処理(D/A変換)を包含した、ディジタル素子を 中心とした回路が現実的なディジタル回路と言えます。 ディジタルとは、ラテン語で「指」という意味で、指を使って数を数える時に、指を伸 ばすか、折り曲げるかの2通りしかないことからきています。 レコードの記憶方式とCD-ROMの記憶方式の違いからアナログとディジタルの違いをみ てみましょう。レコードの場合は音程の強弱に応じて穴の溝の深さを調整していますのでアナログ記録方式です。これに対しCDは、アルミの反射膜に0又は1のデータを記録しま す。(CD面に凹凸を作るCD-ROM方式と、CD面に色素を塗り、レーザ光を使ってその色 素を変色させるCD-RやCD-RW方式があります)つまり、CDの場合は、上記方式にて記録 されたCD面に対してレーザー光を照射し、その反射の違いから0か1を判断し読み取りま す。このCDに記録されたデータを音声に変換する場合は、この読み取られたディジタル信 号を再びアナログデータ(スピーカーはアナログ機器ですので変換が必要ですが、ディジ タルのままで利用する場合は変換の必要はありません)に変換して音声を出力しています ので、ディジタル記録方式と言われます。 アナログであるレコードは、レコード面と読み取りヘッダーを接触させて音声に変えます ので、磨耗による溝の変化や埃等の影響を受けやすい方式と言えます。
ディジタルICとその特性
ディジタルICは半導体で作られています。この半導体は、負の電荷を持つ電子(electron: エレクトロン)と正の電荷を持つ正孔(Hole:ホール)を持ちます。この特性を用いて、整 流作用を持つダイオードや増幅作用を持つトランジスタなどのような能動素子(Active Device)が作られます。 これに対して、抵抗やコンデンサ、及びコイルなどは受動素子(Passive Device)といわれ ています。 なお、ディジタルICのほとんどは、半導体であるシリコンから作られています。このシリ コンにはN形シリコン(純粋シリコンにリンや砒素を混入)とP形シリコン(純粋シリコン にホウ素やガリウムを混入)があります。 いろいろな物質を電気伝導の観点から分類すると以下のようになります。 ① 絶縁体:1012Ω・cm以上 石英、テフロン、アルミナセラミックス ② 半導体:10-1~1012Ω・cm シリコン(Si)、ゲルマニウム(Ge)、ヒ化ガリウム(GaAS)、リン化ガリウム (GaP)、 インジウムアンチオン ③ 導体:10-6~10-1Ω・cm銅(Cu)、銀(Ag)、アルミニウム(Al)、鉄(Fe)、タングステン(W) なお、論理演算回路には様々なものがあり、この組み合わせにより、様々な回路が作ら れています。例えば、2本の信号線のいずれかに信号が入った時に何らかの処理を行う仕 組みを実現しようとした場合、その各々の信号の有無を調べるのは非常に面倒となります。 この2本の信号を、OR回路を使ってひとつの信号にし、入力すれば一本の入力信号線のみ で処理可能となります。このように論理回路は電子回路上、極めて有効なものと言えます。 また、これらのICはゲートと呼ばれ、電流増幅の機能も持っています。 ICとは、シリコンウエーハの表面、及びシリコン内部にダイオード、トランジスタ、抵 抗、及びコンデンサのような素子を集積させ、1チップとしたもので、それ自身で電子回 路を構成しています。また、このチップはプラスチックパッケージ化されています。 このICは集積される素子の数により以下のように分類されています。 ① SSI(Small-Scale Integration) :100個以下(小規模集積回路) ② MSI(Medium-Scale Integration) :102個~103個(中規模集積回路) ③ LSI(Large-Scale Integration) :103~105個(大規模集積回路) ④ VLSI(Very-Large-Scale Integration):105~107個(超大規模集積回 路) ⑤ ULSI(Ultra-Large-Scale Integration):107個以上(超大規模集積回路)