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

ビット演算(AND、OR、XOR)とビットシフトの計算機。32bit符号なし。2進数、16進数、10進数、8進数に対応。
32bit符号なし
2進数16進数10進数8進数
値1
値2
AND0000
OR0000
XOR0000
AND: 論理積, OR: 論理和, XOR: 排他的論理和
2進数16進数10進数8進数
左シフト0000
右シフト0000
シフトするビット数:
- Webツール

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

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

AND(論理積)

二つのビットがどちらも1なら1、どちらかでも0なら0を返す。

    1010
AND 1100
  = 1000

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

and = x & y;

OR(論理和)

二つのビットがどちらかでも1なら1、どちらも0なら0を返す。

   1010
OR 1100
 = 1110

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

or = x | y;

XOR(排他的論理和)

二つのビットが違う値なら1、同じ値なら0を返す(片方だけ1なら1、どちらも0またはどちらも1なら0)。

    1010
XOR 1100
  = 0110

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

xor = x ^ y;

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

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

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

左シフト

右端の空くビット位置には0が入り、あふれた左端のビットは消える。下記は4ビットレジスタの場合の例。

  1111 LEFT-SHIFT 1
= 1110

多くのプログラミング言語では<<を演算子に用いる。

leftShift = x << 1;

右シフト

算術シフト(符号あり)と論理シフト(符号なし)がある。本ツールは後者の論理シフトのみ対応している。どちらもあふれた右端のビットは消えるが、左端の空くビット位置の埋め方が異なる。

算術シフトは符号を保持するため、左端の空くビット位置には最上位ビット(符号ビット)と同じ値が入る。下記は4ビットレジスタの場合の例。

  1011 RIGHT-SHIFT 1
= 1101

  0011 RIGHT-SHIFT 1
= 0001

論理シフトは単純にすべてのビットをシフトするので、左端の空くビット位置には0が入る。下記は4ビットレジスタの場合の例。

  1011 RIGHT-SHIFT 1
= 0101

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

rightShift = x >> 1;  // 算術シフト
rightShift = x >>> 1; // 論理シフト
- Webツール

矢野ヒロタ /1988年生まれ。プログラマー、会社員。仕事で培ったWebやスマホアプリの技術を発信すると見せかけてもっぱら妄想を綴っています。よしなに。