コンピュータの仕組み(ハードウェア)
さてここからは、コンピュータのハードウェア(物質)的な構成要素を見ていきましょう。
コンピュータのハードウェアには大きく分けて5つの装置があります。 この5つの装置のことを、5大装置と言います。
1.入力装置
2.主記憶装置
3.演算装置
4.制御装置
5.出力装置
これを図にすると、こういう関係になります。
1つずつ説明しましょう。
1.入力装置
入力装置とは、何か処理したいデータを、このあと説明するCPUに入れるための装置のことを言います。
キーボード、マウス、タッチパネル、カメラ、スキャナなどがあります。さらに温度センサーや湿度センサーなど各種センサーもあります。
2.主記憶装置
主記憶装置(メインメモリ)とは、プログラムやデータを処理するために一時的に記憶しておく装置のことを言います。
しかしメインメモリは非常に読み書きが高速な反面とても高価なのと、電源が切れてしまうと内容を保持できないので、その時に処理しないものを多く記憶させるのは現実的ではありません。
そこで読み書きの速度は遅いものの、比較的安価で、電源が切れても内容を保持することが出来る補助記憶装置(ストレージとも言う)に保存したいデータを格納します。
現在では、ソリッドステートドライブ(SSD)や、ハードディスク(HDD)、SDカードやUSBメモリと言われるものが多く使われています。 その他光学ディスク(CD/DVD/BD)や磁気テープなども使われることがあります。
3.演算装置
演算装置とは、入力装置や記憶装置から受け取った情報を、足したり引いたり掛けたり割ったり、2つの数値の大小を比較したりしてデータを処理する装置のことを言います。
ここで計算された結果は、再び主記憶装置に送り返されます。
4.制御装置
制御装置とは、5大装置のうち、この制御装置を除く4つの装置の働きを制御(コントロール)する装置のことを言います。
適切な順番で記憶装置からプログラムの命令を取り出して解釈し、その解釈に従って演算装置に計算させたいデータを送ったり、他の部分に信号を送って制御する装置のことです。
なお制御装置と演算装置を1つにパッケージングしたものをCPU(中央処理装置、Central Processing Unitの略)と呼びます。
5.出力装置
出力装置とは、CPUで処理されたデータを人間に意味のある形で表示したり印刷したりする装置のことを言います。
ディスプレイ、プリンタ、スピーカーやヘッドフォンなどがあります。
参考資料:
ハードウェア・ソフトウェアの総合研究 平成5年春期版 一部引用・改変
データとは - IT用語辞典 e-Words 一部引用・改変
情報(インフォメーション)とは - IT用語辞典 e-Words
コンピュータの五大装置とは - IT用語辞典 e-Words
コンピュータで扱えるもの
コンピュータで扱えるもの
コンピュータが扱えるものは、0と1の二つだけです。(これを2進数という) それをある桁数を使って、アルファベットを表せるようになり、さらに拡張されて、漢字を含めアルファベット以外の多くの文字も扱えるようになって行きました。
それを拡張して、画像や音楽も扱えるようになりました。
2進数の応用で今の世界が成り立っているので、基礎を知っておいても損はしないと思います。
情報のコード化(符合化)
情報のコード化
コード化の必要性
コンピュータで扱える情報は数字だけではなく、文字、音声、映像などがあります。
このように様々な情報をコンピュータが処理できる2値数(2進数)に変換することをコード化(符合化、エンコード)と言います。
そしてコンピュータで処理したあと、人間がわかる形に戻す必要がありますが、その変換のことを特に復号(デコード)と言います。
情報のコード化は高度になってきていて、計算や加工のためだけでなく、伝送や保管のためにサイズを小さくする(圧縮)方法や、伝送するときにうまく行かなかった場合の復元など様々な場所で必要とされています。
また暗号化など、情報を保護する観点でのコード化も進んでいます。 暗号化することをエンクリプト(encrypt)といいます。復号することをデクリプト(decrypt)といいます。
トレードBOTを作るに当たっては知らなくてもあまり問題にならないのでこういうものがあるということだけ知っておいてもらえれば、必要なときに探すことが出来るでしょう。
誤り検出・訂正
コード化をすると、正しくコード化出来たかどうか知る必要が出てきます。その基本になるのが、奇偶検査(パリティチェック)です。
これはトレードBOTを作るに当たってはほとんど使いませんので、解説は省略します。
符号化に当たっての誤り訂正の分野も非常に高度になっています。 トレードBOTを作るに当たってはあまり使わないのですが、ブロックチェーンを触ってみたい方は暗号化も含めて必要になる分野ですので、いろいろ探してみるといいと思います。 いくつか基本的な用語のリンクを置いておきます。
参考資料:
デコード(デコーディング)とは - IT用語辞典 e-Words
誤り検出・訂正
パリティビット(パリティデータ)とは - IT用語辞典 e-Words
パリティチェック(奇偶検査)とは - IT用語辞典 e-Words
誤り訂正符号(ECC)とは - IT用語辞典 e-Words
CRC(巡回冗長検査)とは - IT用語辞典 e-Words
チェックサム(サムチェック)とは - IT用語辞典 e-Words
MD5(Message Digest 5)とは - IT用語辞典 e-Words
SHA-1(Secure Hash Algorithm 1)とは - IT用語辞典 e-Words
暗号関連
公開鍵暗号(非対称鍵暗号)とは - IT用語辞典 e-Words
共通鍵暗号(秘密鍵暗号)とは - IT用語辞典 e-Words
RSA(Rivest-Shamir-Adleman cryptosystem)とは - IT用語辞典 e-Words
数値の表し方(特に小数)
数値の表し方
コンピュータの中で利用される数値には、
1.10進数値
2.固定小数点
3.浮動小数点
の3種類があります。
トレードBOTを書けるようになる上で、実用上浮動小数点は覚えて置いた方がいいので、そこだけ説明します。 それ以外は詳しく説明はしませんが、用語集のリンクを置いておきます。 必要に応じて読んでください。
浮動小数点
例えば、365という数値は、0.356 x 103(^は乗数を表す)と表す事が出来、同じように3560という数字は0.356 x 104と表すことが出来ますね。
これを一般化して、365や3560をNと表して、 0.365をmと表して、 103とか104をd x nと表したとき、
Nを数値
mを仮数部
dを底
nを指数部
と呼びます。
この、仮数部(m)と指数部(n)の2つを使って、(仮数部, 指数部)という形で表現する方法を浮動小数点表示といいます。
この方法を使うと、365は(0.356, 3)、3560は(0.356, 4)と表すことが出来るようになります。 そして小数点の次(つまり0.のあと)に有効数字がくるように表現することを、「正規化する」といいます。
これを、正規化した2進数で表現してみましょう。
ここで、(数字)2とか(数字)10とか(数字)16が出てきますが、これは括弧内の数字を何進数で表しているかわかりやすく表現するために使っています。(以後時々出てきます)
(365)10 = (16D)16
となり、これをさらに2進数になおすと、(ここから基数が2になります)
(0001 0110 1101)2
となります。(わかりやすさのために、16進1桁ごとにスペースを入れいています)
ここからさらに上位3桁の0をとると、(101101101)2となり、これを正規化すると、0.101101101 x 29となります。
32ビットの浮動小数は、浮動小数点表示という図のように先頭の1ビットで値の「正」「負」を示し、指数部は8ビット、残りの23ビットが仮数部になります。
todo 浮動小数点表示の図を挿入
32ビット単精度で扱える指数は、-126~127で、それに127を加えて1~254になるようになっています。 (指数部が0と255の時は特殊な意味を持ちます。詳しくは参考資料をごらんください)
もう1つ、浮動小数点について知っておいて欲しいことがあります。
この表現の性質上、浮動小数点の計算をするときは、丸め誤差が出るということです。
これはプログラムを書く上で避けて通れない問題なので、知らないと頭を悩ますときが来ますが、知っていればうまく対処する方法を見つけることが出来ます。頭の片隅に置いておいてください。
詳しく知りたい場合は、こちらの記事で詳しく解説してくださっています
IEEE 754 浮動小数点入門 - ushiostarfish’s diary
参考資料:
(コンピュータの中の)数の表現
数の表現
コンピュータの中では、2進数を使って正と負の数を表すが、その表し方には3通りあります。
1.符号ビットと絶対値を用いる方法
2.1の補数を用いる方法
3.2の補数を用いる方法
補数というものがあって、1の補数と2の補数があることを知っておけば検索して知ることが出来るでしょう。
ここはあまり詳しく説明はしませんが、符号ビットと絶対値を用いる方法だけ、少し説明しておきます。
符合ビットと絶対値を用いる方法
型のある言語の場合、整数と一口に言っても大きく分けて、符号付き整数と符号無し整数という型があります。
符号付き整数の場合、一番左のビット(最上位ビット、MSB)が符合を表す桁になり、例えば8bitの時に扱える数の範囲は7ビット分になります。-128~127の範囲になります。負の数も表せると言うことです。 ちなみにMSBが1の場合、マイナスを表します。
符合無し整数の場合、一番左のビット(最上位ビット、MSB)は符合としては使わず、例えば8bitの時に扱える数の範囲は8ビット分になります。0~255までを使うことが出来ます。負の数は使えないと言うことです。
参考資料:
コンピュータでのデータの表現方法
コンピュータでのデータの表現方法
私たちが日常で使う数字は1桁に付き、0~9の10個の数を使うので、10進数といいます。
それに対しコンピュータはすごく突き詰めていくと、スイッチのONとOFFしか出来ません。 1つのスイッチで表現できるのは、ONとOFFしかありません。スイッチONの時を1、スイッチOFFの時を0と表すとします。
1桁で表せる数が2つの場合のことを2進数(にしんすう)と言います。
2進数で表す1桁を特に、bit (ビット)という単位で呼びます。
2進数で表す8桁(8bit)を特に、Byte(バイト)という単位で呼びます。
単位を省略して使うときに、bitは小文字のb、Byteは大文字のBで表します。同じ"ビー"ですが、違う単位ですので間違わないようにしましょう。
ネットワークの速度を表すbps(bit per secondの略。ビーピーエスという)やメモリやストレージの記憶容量を表すGB(ギガバイトという)などがあります。これは後でもう少し詳しく説明します。
参考資料:
- 作者:Charles Petzold
- 発売日: 2018/02/13
- メディア: Kindle版
この本は、2進数をとてもわかりやすく、歴史を交えながら解説しているので、数字や計算が苦手な方でもゆっくり理解していけると思います。
コンピュータの基本
コンピュータの基本
コンピュータは、プログラムを使ってデータを加工して、人間にとって役に立つ情報を得ようとする装置です。
プログラムとは、コンピュータにさせたい仕事の手順を書いたもののことです。
データとは、何かを数値や文字や記号などのまとまりとして表現したもののことです。
情報とは、人間にとって理解できる、意味のあるデータのことです。
このブログでは、難しいことはとりあえず置いておいて、最小限の基本的なことをできるだけコンパクトに説明したいと思います。
とても内容を端折っているので、書かれた内容を詳しく正確に知りたい場合は、各ページの最後にある本やURLを参考にされてください。
参考資料: プログラムとは - IT用語辞典 e-Words