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

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

情報のコード化(符合化)

情報のコード化

コード化の必要性

コンピュータで扱える情報は数字だけではなく、文字、音声、映像などがあります。

このように様々な情報をコンピュータが処理できる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

不定期連載はじめます

ここでは、仮想通貨のトレードBOTといわれるものを、コンピュータの知識0から初めてみたい人のために、インターネットに点在する知識をBOTという形を作れるように手助け出来るようなサイトにしていきたいと思います。

大雑把なINDEXを書き出しておきます。

1.コンピュータの基礎知識

2.コンピュータの準備

3.OSのインストール

4.プログラミング環境の構築

5.BOTを書くことを目標に、プログラム言語を覚える

この流れとは別に、金融に関する知識も少しずつ入れていけたらいいなと思っています。

本来なら決まった日(曜日)に記事が出せるといいのですが、なにぶん人様に向けて記事を書くということをしてこなかったのと、気分屋なのでどこまで続けられるかわかりませんが、気になる方はお付き合いください。