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

#コンピューターの基礎知識
コンピューターの基礎知識について勉強したことをまとめてみました。
定義を明確に理解していないことも多かったので、アウトプットをしっかりと出す重要性を認識しました。
間違いがあればご指摘いただきたいです。

#情報量の単位について
##bit
語源がbinary digitに由来する。
1bitは2進数での1桁分の情報量。
bitを2進数で以下現してみる。

| bit | 2進数 |
|:----:|:----:|
|1|0, 1|
|2|00, 01, 10, 11|
|3|000, 001, 010, 100, 011, 101, 110, 111|
|...|...|

といった形になる。
別の表現をすると、

| bit | 通り|
|:----:|:----:|
|1|2通り|
|2|4通り|
|3|8通り|
|4|16通り|
|8|256通り|
|...|...|

という形になる。

##Byte
1Byte = 8 bitと定義されている。
2Byte = 16 bit
32Byte = 256bit
と表される。
半角英数字1文字=1Byteと定義されている。
漢字・ひらがな等の日本語は2Byteで１文字が表示されるようになっている。

#2進法と10進法の関して
##2進法から10進法への変換
###10111を10進法で

```math
10111 = 1*2^4+ 0*2^3 + 1*2^2 + 1*2^1 + 1*2^0 \\=16+4+2+1\\=23
```

という計算式で表現できる。

##10進法から2進法へ
###23を2進法で

```math
23=11*2+1\\
11=5*2+1\\
5=2*2+1\\
2=1*2+0\\
1=0*2+1
```
あまりの数字の注目する。
これを下から読むと

```math
10111
```
となる。

#パソコンの基礎知識について
##CPU
Central Processing Unitの意。
コンピューターにおいて、制御・演算を行う。
コンピューター内の各機器とパスで繋がっている。
メモリー上データの読み込み・書き込みを行う。
##メインメモリ
主記憶装置。
容量が大きいほど多くのデータを蓄えることができる。
##ストレージ
パソコンのデータを長期保管するための補助記憶装置。
HDD, SSD, CD, DVDなどが当てはまる。
また内部ストレージと言われる内部保存領域とUSBやSDカードなどの外部保存領域が存在する。
他にはGoogle Driveなどのクラウドストレージが存在する。
##CPU~メインメモリ〜ストレージの関係
| 名前 | 相対的な処理速度|備考|
|:----:|:----:|:---:|
|CPU|とても速い||
|メインメモリ|速い|記憶の際に電源供給が必要|
|ストレージ|遅い|記憶の際に電源供給は必要ない|

前提として上記の処理速度を持っている状態。
仮にメインメモリがない状態だと、ストレージの処理速度に合わせる必要がある。
すると、非常に遅くなってしまうのでメインメモリにあらかじめデータを蓄えておいてメモリ-CPU間で処理を高速に行う。
##OSとは
ハードウェアとアプリケーションの間に位置し、ユーザーや使用するアプリケーションに対してインターフェースを提供する。
ファイルシステム・ユーザーインターフェース（GUI）などが含まれている。
#文字コードとは
コンピューターで文字を用いるために、文字に種類の番号を割り振ったもの。
歴史的に変遷を繰り返し現在に至る。
##符号化文字集合
符号文字集合を集め、その文字集合とビット組み合わせを１対１に関連づける規則の集合。

- JIS X 0201
    - ラテン文字や片仮名の規則集合
- JIS X 0208
    - 日本語の規則集合。2Byte。
- ISO/IEC 10646
    - 世界中の文字の規則集合。Unicodeとも。
    
これらに対し、符号化方式がいくつか対応している。
##文字符号化方式
文字に割り当てた番号とコンピュータが扱う数字の対応表のこと。
上記の符号化文字集合に対応して、文字符号化方式が定められている。
###JIS X 0201/JIS X 0208に対して

- Shift_JIS
- EUC-JP
- ISO-2022-JP

がそれぞれ対応している。
###Unicodeに対して

- UTF-8
- UTF-16

がそれぞれ対応している。

##UnicodeとASCII
###ASCIIとは
[ASCII(アスキー)とは - コトバンク](https://www.google.com/url?client=internal-uds-cse&cx=partner-pub-8353708690493468:1896422876&q=https://kotobank.jp/word/ASCII-13769&sa=U&ved=2ahUKEwi0kKi33NPiAhU9wosBHTDRDRoQFjAAegQIBBAB&usg=AOvVaw3b_JCt056jH-dUhv5KmS3K)より引用
>《American Standard Code for Information Interchange》米国規格協会（ANSI）によって定められた、コンピューターの情報交換用の標準コード。アルファベット・数字・記号などを1文字当たり7ビットで表す。ISOコードもこれに準拠して制定されている。

###Unicodeとは
[Unicode(ユニコード)とは - コトバンク](https://www.google.com/url?client=internal-uds-cse&cx=partner-pub-8353708690493468:1896422876&q=https://kotobank.jp/word/Unicode-9527&sa=U&ved=2ahUKEwjCu6T_3tPiAhUM87wKHZieATAQFjABegQIDxAB&usg=AOvVaw2Lfw-1F99bQHOEm03qEvcd)より引用
>
世界各国でバラバラに使われている文字コードを統一する目的で作成された文字コード。世界の主要な文字のほとんどが収録されているため、Unicodeを使用すればほとんどの言語が表現できることになる。アップル社、マイクロソフト社などの情報企業が提唱し、1993年にISO（国際標準化機構）で国際規格として採用された。すべての文字を2バイトで表すため、アルファベットや漢字などを統一的に取り扱えるが、日本と中国などで使用される字体の異なる漢字が、同じコードに割り当てられているなどの問題点が残っている。現在のWindows、Mac OS Xは、OSレベルでUnicodeに対応しており、フォントやIMEもUnicodeを考慮したものになっている。

という定義になっている。

##UnicodeとUTF-8/UTF-16
符号化文字集合と文字符号化方式でとりわけ、UnicodeとUTF-8/UTF-16を取り扱う。
###UTF-8
- 8bit単位でUnicodeの文字を表示する。
- ASCIIと互換対応している。

###UTF-16
- 16bit単位でUnicodeの文字を表示する。
- ASCIIと非互換。


##参考文献

- [新人さんに知ってほしい「文字コードのお話」](https://qiita.com/yuji38kwmt/items/b3a7820b4d3b544da4ff)
- [ビット(bit)とバイト(Byte)　情報量の単位と2進数](https://www.biwako.shiga-u.ac.jp/sensei/mnaka/ut/binarydigit.html)
- [Qiitaの数式チートシート](https://qiita.com/PlanetMeron/items/63ac58898541cbe81ada)