基数変換
N進数
10進数:0〜9のの数字で数を表す
2進数:0と1の数字で数を表す
8進数:0〜7の数字で数を表す
16進数:0〜9、A〜Fの数字とアルファベットで数を表す
* Nは「使える数字の数」を表し、使える数字で収まり切らない時は、桁を上げていく
→ 2進数:2個(0,1,10,11,100...)
→ 8進数:8個(0,1,2,3,4,5,6,7,10,11...)
10進数 | 2進数 | 8進数 | 16進数 |
---|---|---|---|
0 | 0 | 0 | 0 |
1 | 1 | 1 | 1 |
2 | 10 |
2 | 2 |
3 | 11 | 3 | 3 |
4 | 100 |
4 | 4 |
5 | 101 | 5 | 5 |
6 | 110 | 6 | 6 |
7 | 111 | 7 | 7 |
8 | 1000 |
10 |
8 |
9 | 1001 | 11 | 9 |
10 | 1010 | 12 | A |
11 | 1011 | 13 | B |
12 | 1100 | 14 | C |
13 | 1101 | 15 | D |
14 | 1110 | 16 | E |
15 | 1111 | 17 | F |
16 | 10000 |
20 | 10 |
8進数:1桁0〜7の数値 → 2進数:0〜111(ひとつの桁で2進数3桁分(3ビット)の情報を表現)
16進数:1桁0〜16の数値 → 2進数:0〜1111(ひとつの桁で2進数4桁分(4ビット)の情報を表現)
基数(各桁の重みになる基本の数)
2進数 | 1 | 10 | 100 | 1000 | 10000 |
10進数 | 1 | 2 | 4 | 8 | 16 |
各桁の重み | 2⁰ | 2¹ | 2² | 2³ | 2⁴ |
* 2進数の桁が増えると、10進数は2乗される
→ 2進数の各桁の重み
n進数が持つ各桁の重みの法則
← | ー | 整数部 | 小数点 | 少数部 | ー | → | |
---|---|---|---|---|---|---|---|
nᴺ⁻¹ | n² | n¹ | n⁰ | . | n⁻¹ | n⁻² | n⁻ᴺ |
n番目 | 3桁目 | 2桁目 | 1桁目 | 1桁目 | 2桁目 | n桁目 |
* n進数の各桁の重み
→ 基数と基数の変換ができるようになる
N進数 ↔︎ 10進数の基数変換
基数変換:基数であらわした数値を別の基数に換えること
N進数 → 10進数
10進数表記の求め方:各桁の数字に桁の重みを掛け算して足す
例) 332.5 = 100×3 + 10×3 + 1×2 + 0.1×5
2進数→10進数
2進数 | 1 | 0 | 1 | . | 1 | 0 | 1 |
× | × | × | × | × | × | ||
2進数の重み | 4 | 2 | 1 | . | 1/2 | 1/4 | 1/8 |
↓ | ↓ | ↓ | ↓ | ↓ | ↓ | ||
掛けて足す | 4+ | 0+ | 1+ | . | 0.5+ | 0+ | 0.125 |
= 5.625 (10進数)
10進数 → N進数
整数部:割り算
少数部:掛け算
13.375 → 2進数
* 無限小数:小数点が無限に続く
→ 10進数表記では有限だが、基数変換すると無限少数になることも
2進数 ↔︎ 8・16進数の基数変換
補数と固定小数点
補数
2進数の足し算
2進数の引き算
10進数の引き算と変わらない
0・1しか使えないコンピュータで負の数を表す方法
→ 補数:2種類
- その桁数で最大値になるために補う数
- 次の桁数に繰り上がるために補う数
10進数の場合
* 10進数3桁で表現してるため、桁上がりした「1」は無視
→ 123 + 877 = 000
→ 補数 877:123 の対の負の数と言える(9の補数 +1 = 10の補数)
→ 2つの補数を使うことで負の数を表現できる
2進数の場合
* 2進数4ビットで表現してるため、桁上がりの「1」は無視
→ 0011 + 1101 = 0000
→ 補数 1101 : 0011の対の負の数になる
→ コンピュータは負の数を表すのに2の補数を使う
(2の補数の求め方)
10進数[3]→ 2進数[0011]
- 全てのビットを反転させる
1100 - 1を加える
1101
2進数[1101] → 10進数[-3]
固定少数点
コンピュータ内部の数値の表現方法: 小数点の位置を決められた場所に固定する
2進数8ビットの固定小数点であらわせる整数の範囲
浮動小数点
指数表記を使って数値を扱う
→ 大きい数、小さい数を固定小数点より少ないビット数で表せる
指数表記
基数は固定なので、コンピュータは浮動小数点数の、残りの変化する部分(符号・仮数・指数)の値をビットに割り当てて数を表す。
正規化
浮動小数点の形式
「どこに何ビット割り当てるか」「どう正規化するか」が異なる
32ビットの形式
例)10進数 0.375 を37ビット形式で表すとどうなるか?
IEEE754の形式(32ビット)
* 仮数部 1.XXX で表す
→ 0.XXX の形よりも仮数部(M)で1ビット多く表現することができる
→ 指数部(E)に使えるビットが1つ増える
* バイアス:一定の数値を加えること
* 指数に値を加える理由
→ 負の数を正の数だけで表せるため
例) 10進数 0.375をIEEE754の形式で表すとどうなるか?
誤差
実際の数値とコンピュータ内部で表現できる数値に差が生じる
→誤差が生じるのは5つの場合
桁あふれ誤差
演算結果、コンピュータの表現できる範囲を超えることで発生する誤差
*オーバーフロー:大きすぎて、表現できる範囲を超えること
*アンダーフロー:限りなく0に近いて、表現できる範囲を超えること
丸め誤差
桁落ち誤差
情報落ち誤差
打切り誤差
計算処理を打ち切ることで発生する誤差
例) 円周率:3.1415926535897932384626434....
→ 計算処理を打ち切って 「3.14」 とする
シフト演算
左右にビットをずらして掛け算や割り算をすること
* ◯倍の倍数は基数と桁の重みで決まる
→ 2進数: 2倍、1/2倍・・・
→ 10進数: 10倍、1/10倍・・・
* シフト演算には2種類ある
論理シフト
符号を考慮しないシフト演算
→ 最上位のビットも含めてシフトする
論理シフトにおいて「1」がはみ出した時
左論理シフト
掛け算の結果、ビットで表せる範囲を超えたということ
→ オーバフロー
右論理シフト
割り算の結果、割り切れず余りがはみ出る
算術シフト
左算術シフト
符号ビットと異なる数字がはみ出した場合
→ オーバフロー
右算術シフト
1がはみ出した場合
→ 割り算の余り
2進数を2ⁿ以外の数字で計算する時
論理演算
* 論理回路
→ MIL記号:論理回路を図式化
→ 真理値表:入力と出力のパターンを表にしたもの
* 論理演算
→ 1:真(条件が成立していること) /2:偽(条件が成立していないこと)とみなして、
0、1の2つの値で行う演算
→ 論理式:論理演算を式にしたもの
論理和(OR) または
論理積(AND) かつ
否定(NOT) ではない
論理演算の組み合わせ
否定論理和(NOR)
否定論理積(NAND)
排他的論理和(EOR・XOR)
ビット演算
目的
ド・モルガンの法則
半加算器・全加算器
加算器:2進数の足し算をする回路。
→ 上記の論理回路を使って「2進数の計算処理をする」
半加算器
上位桁への桁上がりのみ考慮した加算器
全加算器
下位桁からの桁上がり、上位桁への桁上がりを考慮した加算器
* 上記の計算では、2桁目以降は下位桁から繰り上がってくる可能性があり、半加算器だけでは対応できない
→ 2桁目以降は全加算器が必要
計測と制御
データの表現方法
アナログデータ:連続して変化する情報 例) 音声・動画・アナログ時計
→ コンピュータで扱うためには、情報を区切って数値で表現する必要がある
ディジタルデータ:アナログデータを区切って、「0」「1」に置き換えた情報
例) ディジタル時計:1分という範囲を60で区切り、数値化したもの
音声のデータ表現
PCM(Pulse Code Modulation)伝送方式 : アナログの音声データ → ディジタルデータ
→ 3段階で変換
1. 標本化(サンプリング)
アナログデータを時間単位で区切ること
* サンプリング周波数: 1秒あたりのサンプリング回数(単位:Hz)
→ 音楽CD: 44.1kHz = 44100Hz(1秒間に44100回の標本を得る)
2. 量子化
サンプリングしたデータを、縦に区切って数値にすること
* 区切る段階数 : 「標本を何ビットのデータで表すか」によって決まる
→ 8ビット = 2⁸(256)段階
→ 各標本を段階に当てはめることで、数値化したディジタルデータになる
3. 符号化
取得した数値を2進数に直す
* サンプル周波数が短い・量子化の段階数が多い
→ 元の音に近い&データ容量が大きい
コンピュータ制御
フィードバック制御:外部の影響をセンサが検知→コンピュータが修正を行う制御
フィードフォワード制御:外部の影響を予測できる場合に、前もって必要な修正を行う
シーケンス制御:あらかじめ定められた順序に従って、制御の各段階を進めていく
コンピュータ制御の要素
-
A/Dコンバーター
A/D変換:アナログデータ → ディジタルデータに変換 -
センサ
自然の色んな情報を計測して、電気信号へ変換
例) ひずみゲージ : 物体の変形を検知
ジャイロセンサ : 機器の角速度(回転の速度)、傾き、振動を検知
人感センサ : 人の存在を検知 -
アクチュエータ
電気信号を物理的な動作に変換(機器を動かす駆動装置のこと) -
アンプ
マイクロフォンやセンサなどが出力した小さな電気信号を増幅する
コンピュータの制御技術
PWM制御(Pulse Width Modulation)
モーターの回転速度や、LEDの明るさなどをディジタル信号で制御する方式
→ 信号の値は「オン」「オフ」のみ
→ 「オン」の時間を長くすると、電流が大きくなって速度や明るさを上げられる
クロック信号
コンピュータ内部の各装置の動作のタイミングをとる信号
→ 立ち上り・立ち下りのどっちかのタイミングに各装置をあわせている
→ 電圧を1,0の二つに変換
→ 高い電圧=1、低い電圧=0 『正論理』
→ 高い電圧=0、低い電圧=1 『負論理』
オートマトン
有限オートマトン : 初期状態 → 受理状態(終了状態)になるもの
状態遷移図 : オートマトンを図にしたもの
AI (Artifical Intelligence) = 人工知能
人の知的な活動をコンピュータにさせること
機械学習
コンピュータが大量のデータ(ビックデータ)を使って学習すること
→ 機械学習の方法は3つ
教師あり学習
あらかじめ「問題」と「答え」を提示 → コンピュータが学習
例) 問題「猫の画像」 答え「猫」 → 猫の特徴を学習
教師なし学習
答えは提示せず、データをグループ分け(クラスタリング)→ 答えを自ら導く
強化学習
試行錯誤して、良い結果が得られる方法を学習
例) 将棋、囲碁などのゲーム用の人工知能
ディープラーニング(深層学習)
人の脳神経回路を真似したモデル(ニュートラルネットワーク)で学習すること
高度な社会
-
超スマート社会: ITと現実空間が融合した社会
- → Society5.0の実現
- → SDGs: 全ての人が困窮せず、豊かに暮らす社会を目指す目標
線形代数
スカラーとベクトル
スカラー : 数値
ベクトル : スカラーを一列に並べたもの
→ 行ベクトル:横方向に並べたもの
→ 列ベクトル:縦方向に並べたもの
→ 成分:ベクトルを構成する要素
行列
「行」「列」で構成
→ 行 : 横のまとまり
→ 列 : 縦のまとまり
上からi行目、左からj行目の成分 = a ᵢʲ
→ a₁₂ = 6
行列の加算
同じ位置の成分同士を加算。
→ 行と列の数が同じ行列同士だけ加算できる
行列の◯倍
行列同士の掛け算
行列A ✖️ 行列B
→ Aの列数とBの行数が同じである必要性
逆行列
正方行列 : 行と列が同じ数の行列
単位行列 : 左上から対角線上の成分が1、それ以外の成分が0の正方行列
逆行列
行列A ✖️ 行列B = 単位行列
→ 「BはAの逆行列」