0からはじめるトレードBOT

知識0から暗号資産の取引BOTを作れるようにするサイト

コンピュータの仕組み(ハードウェア)

さてここからは、コンピュータのハードウェア(物質)的な構成要素を見ていきましょう。

コンピュータのハードウェアには大きく分けて5つの装置があります。 この5つの装置のことを、5大装置と言います。

1.入力装置

2.主記憶装置

3.演算装置

4.制御装置

5.出力装置

これを図にすると、こういう関係になります。

コンピュータの5大装置
コンピュータの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

コンピュータの五大装置とは - IT用語辞典 e-Words

入力装置(インプットデバイス)とは - IT用語辞典 e-Words

記憶装置とは - IT用語辞典 e-Words

ALU(演算装置)とは - 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

パリティチェック(奇偶検査)とは - 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

公開鍵(パブリックキー)とは - IT用語辞典 e-Words

秘密鍵(シークレットキー)とは - 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

参考資料:

IEEE 754 - Wikipedia

浮動小数点数とは - IT用語辞典 e-Words

固定小数点数とは - IT用語辞典 e-Words

丸め誤差とは - IT用語辞典 e-Words

(コンピュータの中の)数の表現

数の表現

コンピュータの中では、2進数を使って正と負の数を表すが、その表し方には3通りあります。

1.符号ビット絶対値を用いる方法
2.1の補数を用いる方法
3.2の補数を用いる方法

補数というものがあって、1の補数2の補数があることを知っておけば検索して知ることが出来るでしょう。

ここはあまり詳しく説明はしませんが、符号ビットと絶対値を用いる方法だけ、少し説明しておきます。

符合ビットと絶対値を用いる方法

型のある言語の場合、整数と一口に言っても大きく分けて、符号付き整数符号無し整数という型があります。

符号付き整数の場合、一番左のビット(最上位ビット、MSB)が符合を表す桁になり、例えば8bitの時に扱える数の範囲は7ビット分になります。-128~127の範囲になります。負の数も表せると言うことです。 ちなみにMSBが1の場合、マイナスを表します。

符合無し整数の場合、一番左のビット(最上位ビット、MSB)は符合としては使わず、例えば8bitの時に扱える数の範囲は8ビット分になります。0~255までを使うことが出来ます。負の数は使えないと言うことです。

参考資料:

補数とは - IT用語辞典 e-Words

MSB(最上位ビット)とは - IT用語辞典 e-Words

符号なし整数型とは - IT用語辞典 e-Words

符号付き整数型とは - IT用語辞典 e-Words

コンピュータでのデータの表現方法

コンピュータでのデータの表現方法

私たちが日常で使う数字は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(ギガバイトという)などがあります。これは後でもう少し詳しく説明します。

参考資料:

CODE: コードから見たコンピュータのからくり

この本は、2進数をとてもわかりやすく、歴史を交えながら解説しているので、数字や計算が苦手な方でもゆっくり理解していけると思います。

2進数(二進数)とは - IT用語辞典 e-Words

10進数(デシマル)とは - IT用語辞典 e-Words

コンピュータの基本

コンピュータの基本

コンピュータは、プログラムを使ってデータを加工して、人間にとって役に立つ情報を得ようとする装置です。

プログラムとは、コンピュータにさせたい仕事の手順を書いたもののことです。

データとは、何かを数値や文字や記号などのまとまりとして表現したもののことです。

情報とは、人間にとって理解できる、意味のあるデータのことです。

このブログでは、難しいことはとりあえず置いておいて、最小限の基本的なことをできるだけコンパクトに説明したいと思います。

とても内容を端折っているので、書かれた内容を詳しく正確に知りたい場合は、各ページの最後にある本やURLを参考にされてください。

参考資料: プログラムとは - IT用語辞典 e-Words

データとは - IT用語辞典 e-Words

情報(インフォメーション)とは - IT用語辞典 e-Words