0
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?

ビットシフト演算子を理解する

Posted at

はじめに

使用するプログラムにおいて、ビットシフト演算子を使用する機会があったので、どのようなものなのか簡単にまとめたいと思います。

2進数と10進数

ビットシフト演算子を理解するためには、まず2進数と10進数について理解している必要があります。

2進数と10進数の対応表は以下のとおりです。

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

2進数から10進数への変換方法

2の倍数に関する10進数と2進数の対応表は以下の通りです。2進数の桁が上がる時の10進数の値が記載されています。以下では、2進数を表現する時は一般的に8桁単位で表現するため、8桁未満の場合は頭に0をつけています。

10進数 1 2 4 8 16 32 64 128
2進数 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000

2進数から10進数への変換する場合は、2進数で1となっている10進数の値を合計することで10進数での値を求める事ができます。例えば、2進数の「00101010」を10進数に変換する場合、基準値が32、8、2の所でビットが1なので、2進数の「 00101010 」は10進数では「42」だと分かります。

上図を見ると、2進数において「1」の値を右に1ビットずらすと、10進数の値が2分の1になっていることが分かります。これが後述するビットシフトにつながります。

※ビットとは?
2進数における1桁のことを1ビット(bit)と言います。

ビットシフト演算子

ビットシフト演算子 >> は、右ビットシフトを行う演算子です。これは、数値を2進数の形式で右にシフトさせる操作で、シフトさせた分だけ数値が小さくなります。

具体的な動作

  • x >> n は、x のビット列を 右に n ビット だけシフトさせます
  • これにより、数値は2のn乗で割った値に相当します(ただし、整数値で計算される)

サンプルコード

bitshift.js
let x = 16; // 16は2進数で 0001 0000
let result = x >> 2; // 右に2ビットシフト
console.log(result); // 出力は4(2進数では 0000 0100)
  • 16 は2進数で 0001 0000 です
  • これを 2 ビット右にシフトすると 0000 0100 になります
  • 結果として 4 となります(16 ÷ 2^2 = 4)

まとめ

ビットシフト演算子についてまとめました。

Reference

0
0
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
0
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?