ビット演算・ビットシフト計算機 / ツール

ツール

ビット演算
2進数16進数10進数8進数
値1
値2
AND0000
OR0000
XOR0000
ビットシフト
2進数16進数10進数8進数
左シフト0000
右シフト0000
シフトするビット数

使い方

ビット演算(AND、OR、XOR)とビットシフトを計算するWebツールです。2進数、16進数、10進数、8進数に対応しています。

  • 任意の基数で数値を入力すると自動で計算します。
  • 32bit符号なしで計算します。

ビット演算(AND, OR, XOR)

二つのビット列を入力とし、同じ位置のビットごとに論理演算を行います。

  • AND(論理積): どちらも1なら1、どちらかでも0なら0を返す。
  • OR(論理和): どちらかでも1なら1、どちらも0なら0を返す。
  • XOR(排他的論理和): 二つのビットが違う値なら1、同じ値なら0を返す(片方だけ1なら1、どちらも0またはどちらも1なら0)。
    1010
AND 1100
  = 1000

    1010
OR  1100
  = 1110

    1010
XOR 1100
  = 0110

多くのプログラミング言語では演算子に&|^を用います。

and = x & y;
or  = x | y;
xor = x ^ y;

ビットシフト(シフト演算)

ビット列の各桁を右か左に移動させます。

ビットシフトもビット列に対する操作であるため、広義にはビット演算の一種とみなされます。しかしビットごとの操作ではなく数値全体に対するものであるため、ビット演算とは区別する場合もあります。

  • 左シフト: 右端の空く位置には0が入り、あふれた左端は消える。
  • 右シフト: 算術シフト(符号あり)と論理シフト(符号なし)があり、どちらもあふれた右端のビットは消えるが左端の空くビット位置の埋め方が異なる(本ツールは論理シフトのみ対応)。
    • 算術シフト: 符号を保持するため、左端の空くビット位置には最上位ビット(符号ビット)と同じ値が入る。
    • 論理シフト: 単純にすべてのビットをシフトするので、左端の空くビット位置には0が入る。

下記は4ビットレジスタの場合の例です。

# 左シフト
  1111 LEFT-SHIFT 1
= 1110

# 右シフト(算術シフト)
  1011 RIGHT-SHIFT 1
= 1101

  0011 RIGHT-SHIFT 1
= 0001

# 右シフト(論理シフト)
  1011 RIGHT-SHIFT 1
= 0101

多くのプログラミング言語では演算子に<<>>>>>を用います。下記はJavascriptの場合の例です。

leftShift  = x << 1;
rightShift = x >> 1;  // 算術シフト
rightShift = x >>> 1; // 論理シフト