Excelでビット演算を使いたいけれど、どの関数を使えばいいのかわからない。そんな経験はありませんか?
ビットシフトの仕組みがわからないと、データの変換作業を手計算で進めることになり、時間もかかって大変ですよね。
この記事では、BITLSHIFT関数の基本的な使い方から実践的な活用例まで、わかりやすく解説していきます。読み終えるころには、ビット左シフトをExcelでサッと処理できるようになりますよ。
ExcelのBITLSHIFT関数とは?
BITLSHIFT関数は、数値を2進数(ビット)に変換し、指定したビット数だけ左にシフトした結果を10進数で返す関数です。
読み方は「ビット レフト シフト」です。
ビットの左シフトとは、2進数の各桁を左方向にずらす操作のことです。左に1ビットシフトすると、元の値が2倍になります。2ビットなら4倍、3ビットなら8倍です。
たとえば、10進数の「5」は2進数で「101」です。これを左に2ビットシフトすると「10100」になり、10進数では「20」になります。つまり 5 x 4 = 20 ですね。
このように、BITLSHIFT関数を使えば、ビット単位のデータ操作をExcel上でかんたんに行えますよ。
対応バージョンは Excel 2013 以降および Microsoft 365 です。Excel 2010 以前では使用できないので、お使いのバージョンを確認しておきましょう。
BITLSHIFT関数の書き方(構文と引数)
基本構文
=BITLSHIFT(数値, シフト量)
引数は2つで、どちらも必須です。
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| 数値 | 必須 | ビットを左にシフトしたい10進数の整数を指定します。0 以上 281,474,976,710,655(2の48乗 – 1)以下の範囲で指定します。 |
| シフト量 | 必須 | 左にシフトするビット数を整数で指定します。絶対値が53以下である必要があります。 |
数値に小数を指定した場合は、小数部分が切り捨てられます。たとえば「5.8」を指定すると「5」として扱われますよ。
シフト量に負の値を指定すると、右シフトになります。BITLSHIFT(数値, -2) は BITRSHIFT(数値, 2) と同じ結果です。覚えておくと便利ですね。
BITLSHIFT関数の基本的な使い方
ここでは、実際にBITLSHIFT関数を入力して結果を確認してみましょう。
値を直接指定する方法
セルに次の数式を入力してみてください。
=BITLSHIFT(5, 2)
結果は「20」になります。5(2進数: 101)を左に2ビットシフトすると 10100(10進数: 20)になるためです。
もうひとつ試してみましょう。
=BITLSHIFT(1, 3)
結果は「8」です。1(2進数: 1)を左に3ビットシフトすると 1000(10進数: 8)になります。左シフト3回は「2の3乗 = 8倍」に相当しますよ。
セル参照を使う方法
A1セルに数値「10」、B1セルにシフト量「3」が入っている場合、次のように入力します。
=BITLSHIFT(A1, B1)
結果は「80」です。10 x 8(2の3乗)= 80 ですね。セル参照を使えば、数値やシフト量を変えるだけで結果が自動更新されます。
BITLSHIFT関数の実践的な活用例
2のべき乗を計算する
BITLSHIFT関数を使うと、2のべき乗の値をかんたんに求められます。
=BITLSHIFT(1, 10)
結果は「1024」です。1を左に10ビットシフトすると、2の10乗 = 1024 が得られます。
この方法は POWER関数(=POWER(2,10))でも同じ結果が得られますが、ビット演算に慣れている方にはBITLSHIFT関数のほうが直感的でしょう。
ほかのビット演算関数と組み合わせる
BITLSHIFT関数は、BITAND関数やBITOR関数と組み合わせて使うこともできます。
たとえば、特定のビット位置にフラグを立てたい場合は、次のようにします。
=BITOR(A1, BITLSHIFT(1, 3))
この数式は、A1の値の第3ビット(右から数えて4番目)を「1」に設定します。A1が「5」(2進数: 0101)なら、結果は「13」(2進数: 1101)です。
反対に、特定のビット位置の値を確認したい場合は、BITAND関数と組み合わせます。
=BITAND(A1, BITLSHIFT(1, 2))
A1が「13」(2進数: 1101)なら、結果は「4」(2進数: 0100)です。第2ビットが「1」であることがわかりますね。
このように、ビット演算関数を組み合わせれば、フラグ管理やデータのマスク処理などに活用できますよ。
よくあるエラーと対処法
BITLSHIFT関数で表示されるエラーと、その原因・対処法をまとめました。
#NUM! エラー
| 原因 | 対処法 |
|---|---|
| 数値が0未満 | 0以上の整数を指定してください |
| 数値が 2^48 – 1 より大きい | 281,474,976,710,655 以下の値を指定してください |
| シフト量の絶対値が53を超えている | -53 から 53 の範囲で指定してください |
| シフト結果が 2^48 – 1 を超える | シフト量を小さくするか、元の数値を小さくしてください |
#VALUE! エラー
数値やシフト量に文字列を指定すると発生します。セル参照先が数値かどうかを確認してみてください。
BITRSHIFT関数やほかのビット演算関数との違い
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 は逆の操作です。左シフトは値を大きく、右シフトは値を小さくします。覚え方は「Left(左)で Large(大きく)」ですね。
BITAND・BITOR・BITXOR は2つの数値のビットを比較する関数です。BITLSHIFTとは用途が異なりますが、組み合わせて使うことで柔軟なビット操作が可能になりますよ。
まとめ
この記事では、ExcelのBITLSHIFT関数について解説しました。
- BITLSHIFT関数は、数値を指定ビット数だけ左にシフトする関数
- 左に1ビットシフトするごとに値が2倍になる
- シフト量に負の値を指定すると右シフトになる
- 数値は 0 以上 2^48 – 1 以下、シフト量の絶対値は53以下
- BITAND関数やBITOR関数と組み合わせれば、フラグ管理にも活用できる
ビット演算はなじみが薄いかもしれませんが、仕組みさえ理解すればシンプルです。まずは =BITLSHIFT(1, 3) のようなかんたんな数式から試してみてくださいね。
