基本情報技術者試験

<a href="https://gihyo.jp/book/2019/978-4-297-11011-6">栢ノ木先生の本</a>の内容に基づいて投稿します。来年の4月に試験をうける予定です。何か解釈が違うところありましたら、ご指摘いただきたいです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592457/870ac503-2ec9-ebbd-32af-f5149b3d2d9c.png)


<h1>基本情報技術者試験</h1>
ITエンジニアとしての基礎とはどこからどこまでなのか、人によって違う事もあると思います。例えば、プログラミングの簡単な処理だとか、コンピューター自体の基礎だったり。
どれが正しくて、間違っているのかは人の主観によりますが、国家として「これが基礎です。」と定めてるものがあります。それが基本情報技術者試験です。

<h2>合格率</h2>
基本情報技術者は、システム開発の登竜門となる試験と位置づけられているらしいです。合格率は20%~30%と低いです。。試験当日の欠席者が多いらしく、みんなモチベーションとか保つのが大変らしいです。

||平成30年度秋季|平成30年度春季|
|:--|:--|:--|
|応募者数|82,347|77,470|
|受験者数|60,004|54,686|
|合格者数|13,723|12,155|
|合格率|22.9%|22.2%|
(JITECが発表した統計から抜粋)

<h2>出題範囲</h2>
出題範囲はめっちゃ広いです。「テクノロジ系」、「マネジメント系」、「ストラテジ系」、と3つに分類されます。合格点は100点満点で60点以上です。
<h3>テクノロジ系(50問)</h3>
・基礎理論
・コンピューターシステム
・技術要素
・開発技術
<h3>マネジメント系(10問)</h3>
・プロジェクトマネジメント
・サービスマネジメント
<h3>ストラテジ系(20問)</h3>
・システム戦略
・経営戦略
・企業と法務

<h1>情報の表現</h1>
<h2>・情報量の単位</h2>
コンピューター内部では全ての情報は電気信号のONとOFFのように2つの値で扱われているので、これを一般的に2進数「１」、「０」に対応させて表現しています。コンピューターで扱う最小の情報量の単位を<font color="red">ビット(bit)</font>といい、2進数1桁に相当します。このビットを8個集めたものを<font color="red">バイト(Byte)</font>と言い、2進数8桁に相当します。バイトが情報量の基本単位です。1Byte = 8bitと決まったのは、2008年ごろらしいです。割と最近ですね。元々は1Byte = 4bitだったらしいです。
<h2>情報量の接頭語</h2>
コンピューターの情報量は膨大です。そこでByte以上の量を表す、接頭語が存在します。スマホなどの通信量でお馴染みの通信量の単位は「G(ギガ)」ですね。

|接続語|意味|
|:--|:--|
|K(キロ)|10³倍|
|M(メガ)|10⁶倍|
|G(ギガ)|10⁹倍|
|T(テラ)|10¹²倍|

<h2>時間を表す接頭語</h2>
コンピューターの処理速度を表す接頭語も存在しています。S(秒)の前に10の整数乗倍を表す接頭語、m(ミリ)、μ(マイクロ)、n(ナノ)、p(ピコ)が使われています。ピコ太郎のピコはここからきているらしいです。嘘です。

|接続語|意味|
|:--|:--|
|m(ミリ)|10⁻³倍|
|μ(マイクロ)|10⁻⁶倍|
|n(ナノ)|10⁻⁹倍|
|p(ピコ)|10⁻¹²倍|

<h2>文字コード</h2>
コンピューター内部は0と１の2進数で表現されています。にも関わらず、コンピューターが文字を扱う事ができるのは、文字の1つ一つに、０と１の２進数で表現された識別番号が割り振っているからです。識別番号の割り振り方式を<font color="red">文字コード</font>といいます。
**例**
　あ　-> シフトJISコード「1000 0010 1010 0000」
　　　　 Unicode(UTF-8)「1110 0011 1000 0001 1000 0010」
たまに「文字化け」という現象が起こりますが、これは、製作者使った文字コードとは異なる文字コードを当てはめた事で起こります。Unicode(UTF-8)は世界の文字の多くを1つの体系で表現するコードです。

<h1>指数計算</h1>
情報量や時間を計算する際に役立つのが指数の計算です。主なパターンは以下になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592457/839f08c3-f05d-30c0-6824-6c8ee7336821.png)
<font color="red">**パターン1**</font>

*2³×2²*

これは、一つずつ計算するのもありですが、数が大きくなると面倒なので、下記の構文を用いて計算すると楽です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592457/a2aea272-0e0f-d3f3-f20b-3b8d56ae9cb4.png)
これを用いるとこんな感じで計算できます。ちなみに、逆の除算は指数同士を引き算して求めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592457/f6ba3fc0-f597-8357-25ec-df4509fd1340.png)
<font color="red">**パターン2**</font>
*(3²)²*
計算方法は２通りあります。１つは、カッコの中の３の２乗を先に計算し、「（３×３）＝９」。これをさらに２乗して「９×９＝８１」とする方法。そしてもう一つは下記の構文を利用するやり方です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592457/1d29a3d9-83c3-3568-085e-45b1fca6634f.png)
これを用いると、以下のように求められます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592457/233e5ce1-1b1b-62bf-8e18-b7a27e09158c.png)
<font color="red">**パターン3**</font>
(2×3)²
これも構文を利用する事で簡単に求められます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592457/acc0cf99-ea3b-5570-e035-bc48d5726d59.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592457/daf0b29d-dfdf-a89b-2e66-5bba1385b874.png)

他にも構文はありますので是非調べてみてください。
例題を一つ上げます。

<font color="red">問題</font>
**32ビットで表現できるビットパターンの個数は、24ビットで表現できる個数の何倍か。**

ア、8
イ、16
ウ、128
エ、256


**解説**
nビットで表現できる情報量は2ᴺ通り。32ビットでは２³²、24ビットでは2²⁴通りのビットパターンが表現できる。よってこんな感じで求められます。
*2³² ÷　2²⁴ = 2³²⁻²⁴ = 2⁸ = 256*

<h1>コンピューターの5大装置</h1>
コンピューターは、制御装置、演算装置、記憶装置、入力装置、出力装置の五つの装置から構成されています。このうち、制御装置、演算装置を合わせて、**中央処理装置（CPU）**または、処理装置といいコンピューターの頭脳に当たります。それぞれ以下の様な役割を担っています。

|装置|役割|
|:--|:--|
|制御装置（CPU）|記憶装置からプログラムの命令を取り出して解読し、それぞれの装置に指示を与える|
|演算装置(CPU)|四則演算や比較判断などのデータの処理や加工を行う|
|記憶装置|データやプログラムを記憶する|
|入力装置|コンピューターの外部からプログラムやデータを読み込む|
|出力装置|コンピューターの内部で処理されたデータを外部へ書き出す|
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/592457/f2faa0f7-49e0-23a0-060e-87811e3c4e9c.png)

<h2>ハードウェアとソフトウェア</h2>
上記で上げた5大装置は、<font color="red">ハードウェア</font>とも言われます。機械として物理的に触る事ができます。これに対して、プログラムやアプリなどは<font color="red">ソフトウェア</font>と言われます。物理的にはさわれませんが、記憶装置に書かれた信号という形で存在しています。
<h2>プログラム内蔵方式</h2>
一般に使用されているコンピューターの基本アーキテクチャ（設計方針）として、プログラム内蔵方式が採用されています。これは、実行するプログラムを予め、主記憶装置上に読み込んでおく方式で、プログラム格納方式をも言われます。これにより、ハードウェアを変更しなくてもプログラムを変更する事で、様々な処理を行う事ができます。他にも色々な方式が存在します。

**1.DMA制御方式**
CPU（制御装置、演算装置）を介さずに入出力装置と主記憶装置の間のデータ転送を行う方式です。と言っても、データ転送が行われるまではCPUが入出力制御を行うのですが、CPUからの入出力命令があるとCPUはDMAコントローラーという入出力制御専用のチップに情報を送ります。

**2.アドレス指定方式**
コンピューターのCPUが命令を実行する際に、対象となるデータのメインメモリ上での所在情報(アドレス、番地)を指定する方式のことです。命令のアドレス部に記憶されたデータと、実行時に特定のレジスタに格納された値などの組み合わせによってい指定されます。

**3.仮想記憶方式**
ハードディスクの一部を主記憶として利用することによって見かけ上の主記憶の容量を拡大する記憶管理方式です。仮想記憶方式が提供する仮想記憶(仮想メモリー)の空間は主記憶(実メモリー)と同じ様に扱えるので、実際の主記憶の容量よりも大きなメモリーを必要とするプログラムを実行する事ができます。


<h1>終わりに</h1>
参考資料
https://proengineer.internous.co.jp/content/columnfeature/3749
https://www.seplus.jp/dokushuzemi/fe/fenavi/guide/fe_description/
https://manapedia.jp/text/1384
<a href="https://gihyo.jp/book/2019/978-4-297-11011-6">栢ノ木先生の本</a>