【超入門IT講座】現代社会に必須!データベースのキホン①
どうもみなさんこんにちは、IT修行中のななこです!ここでは、IT超初心者の私が知りたい!と思ったことにスポットを当て、「なるほど!」と感じたことをご紹介します!今回はITエンジニアになるなら知っておくべき「データベース」の基本について学んだことをお話しますね✨1. データベースとは?データベースは、アプリケーションのデータを保存・蓄積するための手段です!大量のデータを蓄積しておいて、そこから必要な
Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!
フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。
10進数で掛け算・割り算ができるように、他の基数での掛け算・割り算も可能です。
この記事を読むことで、
・2進数の掛け算・割り算(乗除算)
・論理シフト
・算術シフト
以上のことが分かります。
また、基数・進数・桁の重みについてより詳しく知りたい方は、
をご一読ください。基数についてより知ることができます!
2進数の掛け算と割り算は、ビットを右や左にずらして行います。
このビットをずらす(シフトする)操作を「シフト演算」と呼びます。
また、このシフト演算には「論理シフト」と「算術シフト」という2つの手法があります。
論理シフトとは、符号を考慮せずにシフトを操作することをいいます。
つまり、先頭ビットも数値として考えてシフトをする、ということです。
元の数値を左にシフトすることで、掛け算(2のn乗)ができます。
空いた桁には“0”を入れます。
2進数「1010」(10進数「10」)を左に1シフト(左論理シフト)することで、
2進数「10100」(10進数「20」)になり2倍にできました。
また、左論理シフトではあふれたビットは捨てます。
例えば、上記の例が4ビットまでを表すことができるとします。
上記の例では「1010」を2倍にしたため、5桁目に数値が入ります。
この場合、4ビットまでしか表せない、となっているため、
5桁目は
「オーバーフロー(桁あふれ)」:扱える範囲の数値の最大値を超えてしまったこと
となり、正確に数値が表せなくなってしまいます。
4ビットまでしか入らないところに5ビットの数値を入れようとしたため起こってしまい、正しい結果を得られません。
(コンピュータで数値を表す場合は、8ビットや16ビットなどの範囲が多いです)
表現できるビット数には注意しながら計算をするようにしましょう。
元の数値を右にシフトすることで、割り算( 1/2のn乗)ができます。
“0”があふれた場合は、消します。
2進数「1010」(10進数「10」)を右に1シフトすることで、
2進数「101」(10進数「5」)になり1/2倍(半分)にできました。
論理シフトでは、符号を考慮せずに計算するため、上記の例のように4桁すべてをシフトして、倍や1/2にすることができました。
また、あふれた数値が"1"だった場合は、割り算の余りとなります。
算術シフトは、論理シフトに符号(+,-)が付いたものになります。
2進数では、先頭ビットが符号になります。
つまり、先頭ビットは固定して、それ以下の数値のみをシフトをする、ということです。
※2進数の先頭ビットを符号とする場合、0→正・1→負とします。
2進数の符号については、
2進数の足し算・引き算(加減算)の方法と正の数・負の数、補数について解説! 負の数(-:マイナス)の表し方
に詳しく解説してあります。
論理シフトと同じく、元の数値を左にシフトすることで、掛け算(2のn乗)ができます。
先頭ビット(4桁目)は符号として扱うため、固定です。
左にシフトし、空いた1桁目には“0”を入れます。
2進数「1110」(10進数「-2」)を左に1シフトすることで、
2進数「1100」(10進数「-4」)になり2倍にできました。
また、シフトすることによってあふれたビットが「固定した符号ビットと異なる数値」だった場合は、
論理シフトで説明した「オーバーフロー」が発生してしまいます。
オーバーフローをしたことにより、正しい結果が得られませんでした。
表現できるビット数には注意しながら計算をするようにしましょう。
負の数は元の数値を反転させ、+1させます。
元の数値を右にシフトすることで、割り算( 1/2のn乗)ができます。
“0”があふれた場合は、消します。
2進数「1110」(10進数「-2」)を右に1シフトすることで、
2進数「1111」(10進数「-1」)になり1/2倍(半分)にできました。
また、あふれた数値が"1"だった場合は、割り算の余りとなります。
図※1
右に算術シフト(算術シフトの割り算)をした場合、空いた桁に入れる数値は先頭ビットによって変わります。
算術シフトの割り算(右シフト)の場合は、空いた桁に入れる数値には注意が必要です!
上記までは、右シフトや左シフトをすることで掛け算・割り算の方法を紹介しました。
しかし、シフト演算では
右シフト(掛け算)することで「2・4・8…倍」
左シフト(割り算)することで「1/2・1/4・1/8…倍」
と倍々の計算しかできません。
例えば「3倍」や「5倍」などシフト演算ではできない計算はどうすればよいのでしょうか?
答えは、
掛け算をしたい場合「倍にしたい数値を2の n乗に置き換え、足し算をする」
割り算をしたい場合「元の数値から割りたい数値が2の n乗回、引けるかを計算する」
です。
元の数値を5倍にする例(算術シフト)で解説します。
2進数「11111110」(10進数「-2」)が5倍の
2進数「11110110」(10進数「-10」)になりました。
掛け算をしたい場合
「倍にしたい数値を2の n乗に置き換え、足し算をする」
倍にしたい数値 →5
2の n乗に置き換え→2²と2⁰(4と1)
足し算をする →( a × 2²)+( b × 2⁰)
ということです。
今度は、元の数値を1/5倍にする例(論理シフト)で解説します。
2進数「110」は10進数「6」です。
2進数「00011110」(10進数「30」)が1/5倍(÷5)の
2進数「110」(10進数「6」)になりました。
いくつ左にシフトしたかを考えていくと
2²(2ビットシフト)+2¹(1ビットシフト)
=4+2
=6(0110)
元の数値から引くことができた回数は、いくつ2の n乗シフトしたかを足すことで分かります。
また、10進数で考えると、
① 30-5=25
② 25-5=20
③ 20-5=15
④ 15-5=10
⑤ 10-5=5
⑥ 5-5=0
30は5を6回引くことができる、ということです。
このことからも、割り算は引き算で元の数値から何回引けるか、で答えが分かるということです。
割り算をしたい場合
「元の数値から割りたい数値が2の n乗回、引けるかを計算する」
元の数値 →30
割りたい数値 →5
2の n乗回 →2²+2¹
引けるかを計算→2²+2¹=6
ということです。
2進数の掛け算・割り算について、シフト演算での方法が分かったでしょうか?
左シフトで掛け算、右シフトで割り算ができます。
また、空いた桁のスペースには“0”を
算術シフトの右シフトの場合にのみ、符号が“1”であれば空いた桁に“1”を入れます。
これは、忘れやすいので注意しましょう。
そのような方はぜひ、Workteriaサイトをご利用ください!
定期的にご本人に合う高額案件を紹介
リモートワークなど自由な働き方ができる案件多数
専属エージェントが契約や請求をトータルサポート