1
1

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 5 years have passed since last update.

シフト演算とは

Posted at

シフト演算とは

プログラミングをしている際にシフト演算とか出てきたのでそれを理解するための知識

2進数について

2進数とは0と1のみで数字を表したものである
普段使っている数は10進数であり、9まで来ると次の位が1つ増える。(=10で繰り上がる)
例)9→10(2桁目が1になる)

つまり、
●●進数の●●の部分の数で繰り上がるということ。

では2進数では、
2で繰り上がる(=1まで来ると次の位が1増える)
10進数の2を2進数で表すと10となる。

10
 ↑
1つ目の位は1までしか入れないので2となると次の位が繰り上がり1となる

符号付き2進数について

実はこの2進数にも符号付き符号無しがある
符号つき2進数.png
(符号つき2進数より)

図のように符号付きの場合、一番高い位が0か1で符号が変わる。
(最上位の位がマイナスを表しているが他の位はプラスなので注意!)

つまり符号無しでは0~256の数字が表せて、符号ありでは-128~127が表せます。
符号つき2進数.png
(符号つき2進数より)

10000000→-128になるの?

符号付きの場合最上位の位が1であればマイナス。
今回は8桁のため、 2の8乗で128。
にマイナスをつける。

11111111→-1になるの?

上記より符号付き2進数では10000000=-128
最上位以降の位は1111111は全て1なので+127。
(最上位の位がマイナスを表しているが他の位はプラスなので注意!)
-128+127=-1。

いざシフト演算

シフト演算には2種類あります。

  • 論理シフト(符号なし)
  • 算術シフト(符号付き)

論理シフト

符号無しについて行うときに使う。
2進数を{左or右}にN個論理シフトすると使いN個{左or右}にずらすことをいう。

↓左に2個論理シフト
シフト演算.png
(シフト演算より)

これは元の数を2のN乗することに相当。
(右は逆)

算術シフト

符号付きについて行うときに使う。
2進数を{左or右}にN個算術シフトすると使いN個{左or右}にずらすことをいう。

↓右に2個算術シフト
シフト演算.png
(シフト演算より)

なるほどです。

参考にしたサイト

ありがとうございました。
符号つき2進数
シフト演算

1
1
0

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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?