1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

N進数とその計算についてのまとめ

Posted at

N進数

  • N進数でよく使われるやつは以下の4つ
    • 2進数
    • 8進数
    • 10進数
    • 16進数

2進数

2進数の桁上りは10進数の数が2のn乗のときに発生する。

10進数 2進数
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
10 1010

8進数

8進数の桁上りは10進数の数が8のn乗のときに発生する。

10進数 8進数
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 10
9 11
10 12
11 13
12 14
13 15
14 16
15 17
16 20
... ...
64 100

16進数

16進数の桁上りは10進数の数が16のn乗のときに発生する。

10進数 8進数
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 a
11 b
12 c
13 d
14 e
15 f
16 10
17 11
... ...
256 100

基数変換

ある基数で表した数値を別の数値に置き換えることを基数変換と言う。
基本情報技術者試験の問題で出題されるため、基数変換の方法を抑えておく必要がある。

基数変換するのに便利なサイト
https://tools.m-bsys.com/calculators/radix_convertor.php

10進数をN進数にしたい場合

10進数の値をNで割った余りを利用する。
以下は10進数の123を16進数に変換する例
image.jpg

N進数を10進数に変換する場合

この場合は桁の重みを利用する。
N進数の桁の重みは以下の通り

桁数 桁の重み
1 Nの0乗
2 Nの1乗
3 Nの2乗
4 Nの3乗
... ...
N NのN-1乗

2進数であれば、1桁目の重みは1、2桁目は2、3桁目は4、4桁目は8のようになる。

16進数を桁の重みを利用して10進数に変換すると以下のようになる。
image.png

2進数の計算

コンピュータの計算は足し算しかできない。
しかし普段使用しているパソコンは足し算だけでなく引き算も掛け算、割り算ができる。
つまりコンピュータは足し算のみを駆使して引き算、掛け算、割り算を行っている。

足し算

0001と0110を足し算した場合は以下のような計算をする。

10進数の計算を2進数として行うだけなのでシンプル。
よって答えは1001。

引き算

10進数でも
5+(-2)=3
のような形で足し算で引き算が可能。
同じように2進数の先頭を符号にしてみる。

例:

0011は3
1011は-3

0011+1011=1110
0000になって欲しいのにならない。

そこで補数というものが登場する。

2の補数

2の補数が何かについての説明は省略。
0011のビットを反転する。
すると1100になる。
1100に0001を加算して1101にすると0011の2の補数になる。
image 2.png

0011+1101=10000
4ビットの計算なので、先頭の5ビット目を切り捨てると0000になる。
2の補数を利用してマイナスの数を2進数で表すことができる。

10進数 2進数
3 0011
2 0010
1 0001
0 0000
-1 1111
-2 1110
-3 1101

掛け算と割り算

2進数で掛け算と割り算をするにはシフト演算を理解する必要がある。

シフト演算とは?

シフト演算とは、2進数のビット列を右または左にずらす演算のこと。

10進数で例えると330という数があったとき

  • 3300と左に桁をずらすと10倍になる。
  • 33と右に桁をずらすと1/10倍になる。

以上の内容は2進数でも同じ。
0110(6)の2進数があったとき

  • 1100と左に桁をずらすと2倍(12)になる。
  • 0011と右に桁をずらすと1/2倍(3)になる。

つまり左にn桁ずらすと2のn乗倍になり、右にn桁ずらすと1/2のn乗倍になる。

符号を考慮するシフト演算(算術シフト)

符号を考慮して行うシフト演算を算術シフトと呼ぶ。
先頭のビット数を固定する。

例:左シフトの場合
image 5.png

例:右シフトの場合
image 4.png

3倍や5倍を計算するときは?

2の倍数ではないときでも工夫すればシフト演算で対応できる。

掛け算をしたいとき

倍にしたい数値を2のn乗に置き換えて足し算をする。

例:
8×5をする場合
image 6.png

割り算をしたいとき

割りたい数字を割る数字で何回引くことができるかを考える。
これは文字で説明するより実際に見たほうがわかりやすいと思う。

例:
15÷4をする場合
image 7.png

1
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?