Excelでビットの右シフトを使いたいけれど、どの関数を選べばいいのか迷っていませんか?
ビットシフトの仕組みがわからないまま手計算で進めるのは、時間がかかるうえにミスのもとですよね。
この記事では、BITRSHIFT関数の基本的な使い方から実践的な活用例まで、わかりやすく解説していきます。読み終えるころには、ビット右シフトをExcelでサッと処理できるようになりますよ。
ExcelのBITRSHIFT関数とは?
BITRSHIFT関数は、数値を2進数(ビット)に変換し、指定したビット数だけ右にシフトした結果を10進数で返す関数です。
読み方は「ビット ライト シフト」です。「Right(右)」の「R」と覚えておきましょう。
ビットの右シフトとは、2進数の各桁を右方向にずらす操作のことです。右に1ビットシフトすると、元の値を2で割った結果(小数切り捨て)になります。2ビットなら4分の1、3ビットなら8分の1です。
たとえば、10進数の「20」は2進数で「10100」です。これを右に2ビットシフトすると「101」になり、10進数では「5」になります。つまり 20 / 4 = 5 ですね。
このように、BITRSHIFT関数を使えば、ビット単位のデータ操作をExcel上でかんたんに行えますよ。
対応バージョンは Excel 2013 以降および Microsoft 365 です。Excel 2010 以前では使用できないので、お使いのバージョンを確認しておきましょう。
BITRSHIFT関数の書き方(構文と引数)
基本構文
=BITRSHIFT(数値, シフト量)
引数は2つで、どちらも必須です。
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 数値 | 必須 | ビットを右にシフトしたい10進数の整数を指定します。0 以上 281,474,976,710,655(2の48乗 – 1)以下の範囲で指定します。 |
| シフト量 | 必須 | 右にシフトするビット数を整数で指定します。絶対値が53以下である必要があります。 |
数値に小数を指定した場合は、小数部分が切り捨てられます。たとえば「20.7」を指定すると「20」として扱われますよ。
シフト量に負の値を指定すると、左シフトになります。BITRSHIFT(数値, -2) は BITLSHIFT(数値, 2) と同じ結果です。覚えておくと便利ですね。
BITRSHIFT関数の基本的な使い方
ここでは、実際にBITRSHIFT関数を入力して結果を確認してみましょう。
値を直接指定する方法
セルに次の数式を入力してみてください。
=BITRSHIFT(20, 2)
結果は「5」になります。20(2進数: 10100)を右に2ビットシフトすると 101(10進数: 5)になるためです。
もうひとつ試してみましょう。
=BITRSHIFT(8, 3)
結果は「1」です。8(2進数: 1000)を右に3ビットシフトすると 1(10進数: 1)になります。右シフト3回は「2の3乗 = 8で割る」に相当しますよ。
セル参照を使う方法
A1セルに数値「100」、B1セルにシフト量「2」が入っている場合、次のように入力します。
=BITRSHIFT(A1, B1)
結果は「25」です。100 / 4(2の2乗)= 25 ですね。セル参照を使えば、数値やシフト量を変えるだけで結果が自動更新されます。
BITRSHIFT関数の実践的な活用例
2のべき乗で割り算する
BITRSHIFT関数を使うと、2のべき乗による割り算をかんたんに行えます。
=BITRSHIFT(1024, 4)
結果は「64」です。1024を右に4ビットシフトすると、1024 / 16(2の4乗)= 64 が得られます。
通常の割り算でも同じ結果になりますが、ビット演算を使う場面ではこちらのほうが直感的です。データ通信のパケットサイズ計算など、2のべき乗が頻出する場面で便利ですよ。
ほかのビット演算関数と組み合わせる
BITRSHIFT関数は、BITAND関数やBITOR関数と組み合わせて使うこともできます。
たとえば、特定のビット位置の値を取り出したい場合は、次のようにします。
=BITAND(BITRSHIFT(A1, 4), 15)
この数式は、A1の値の上位4ビット(第4〜7ビット)を取り出します。まずBITRSHIFTで4ビット右にずらし、BITAND関数で下位4ビットだけを取り出す仕組みです。
A1が「200」(2進数: 11001000)の場合、右に4ビットシフトすると「12」(2進数: 1100)になります。さらに15(2進数: 1111)とANDをとると「12」がそのまま返ります。
ちょっとむずかしく見えますが、やっていることはシンプルです。「ずらして、必要な部分だけ取り出す」という流れですね。
このテクニックは、RGBカラーコードの各色成分を取り出したり、フラグの特定ビットを確認したりするときに活用できますよ。
よくあるエラーと対処法
BITRSHIFT関数で表示されるエラーと、その原因・対処法をまとめました。
#NUM! エラー
| 原因 | 対処法 |
|---|---|
| 数値が0未満 | 0以上の整数を指定してください |
| 数値が 2^48 – 1 より大きい | 281,474,976,710,655 以下の値を指定してください |
| シフト量の絶対値が53を超えている | -53 から 53 の範囲で指定してください |
数値の範囲は BITLSHIFT関数と共通です。48ビット(約281兆)が上限なので、通常の業務データなら問題ありませんよ。
#VALUE! エラー
数値やシフト量に文字列を指定すると発生します。セル参照先が数値かどうかを確認してみてください。
BITLSHIFT関数やほかのビット演算関数との違い
Excelにはビット演算に関連する関数がいくつかあります。それぞれの役割を整理しておきましょう。
| 関数名 | 機能 | 使用例 |
|---|---|---|
| BITLSHIFT | ビットを左にシフト(値が大きくなる) | =BITLSHIFT(5, 2) → 20 |
| BITRSHIFT | ビットを右にシフト(値が小さくなる) | =BITRSHIFT(20, 2) → 5 |
| BITAND | 2つの数値のビット単位AND(論理積) | =BITAND(5, 3) → 1 |
| BITOR | 2つの数値のビット単位OR(論理和) | =BITOR(5, 3) → 7 |
| BITXOR | 2つの数値のビット単位XOR(排他的論理和) | =BITXOR(5, 3) → 6 |
BITLSHIFTとBITRSHIFTは逆の操作です。左シフトは値を大きく(掛け算)、右シフトは値を小さく(割り算)します。覚え方は「Right(右)で Reduce(小さく)」ですね。
BITAND・BITOR・BITXORは2つの数値のビットを比較する関数です。BITRSHIFTとは用途が異なりますが、組み合わせて使うことで柔軟なビット操作が可能になりますよ。
まとめ
この記事では、ExcelのBITRSHIFT関数について解説しました。
- BITRSHIFT関数は、数値を指定ビット数だけ右にシフトする関数
- 右に1ビットシフトするごとに値が2分の1になる
- シフト量に負の値を指定すると左シフトになる
- 数値は 0 以上 2^48 – 1 以下、シフト量の絶対値は53以下
- BITAND関数やBITOR関数と組み合わせれば、特定ビットの取り出しにも活用できる
ビット演算はなじみが薄いかもしれませんが、仕組みさえ理解すればシンプルです。まずは =BITRSHIFT(20, 2) のようなかんたんな数式から試してみてくださいね。
