広告

BTIRSHIFT関数の使い方|ビットを指定した桁数だけ右へシフトする

2021年7月1日

=BITRSHIFT(値,シフト数)

BITRSHIFT_SAMPLE

BITRSHIFT(ビット・ライト・シフト)関数は、入力値のビットを指定した桁数だけ右へシフトする関数です。

参考:BITRSHIFT関数ドキュメントエディタヘルプ

BITRSHIFT関数の使い方. 構文

BITRSHIFT関数の構文は以下のとおりです。基本的にBITLESHIFT関数と逆の動きをする関数です。

=BITRSHIFT(値,シフト数)

BITRSHIFT関数の構文内訳

引数 説明 注意書き
シフトされる数値。 必ず指定- 0以上の負でない整数を指定します。
シフト数 シフトする桁数。 必ず指定- -52以上53以下の値を指定します。負の値を指定すると、実質的にBITLSHIFTになります。

BITRSHIFT関数の使い方・実行サンプル

BITRSHIFT関数を実行するサンプル。

BITRSHIFT関数にて

  • 数値に10を
  • シフト数に3を

設定したときの結果を求めます。

シフトが分かりやすいようにC列にDEC2BIN関数を設置して、2進数を表示しています。

項目 10進数 2進数
数値 10 =DEC2BIN(B2)
ビット数 3 =DEC2BIN(B3)
BITRSHIFTの計算結果 =BITRSHIFT(B2,B3) =DEC2BIN(B4)

BITRSHIFT関数で算出した結果。

項目 10進数 2進数
数値 10 1010
ビット数 3 11
BITRSHIFTの計算結果 1 1

GIFで↓

BITRSHIFT_SAMPLE

2進数で「1010」だった値がBITRSHIFT関数によって右に3つシフトすることで、「0001」という値に変わりました。

BITRSHIFT_howto

OYAKUN
OYAKUN
BITRSHIFT関数にて、シフト数の箇所に3を入れたとき2進数が「1010」から「0001」へ変化していることが分かりますね。

BITRSHIFT関数のサンプル実行結果

画像でBITRSHIFTサンプル実行結果を確認↓

BITRSHIFT_kekka

BITRSHIFT関数 × GASの使い方・サンプル

BITRSHIFT関数をGASで利用する際の、かんたんなサンプルを作成してみました。

実装する表のサンプル。

成功数 試行回数 成功率 成功する確率
デフォは空白 デフォは空白 デフォは空白 デフォは空白

実装するGAS

function BITRSHIFT() {
var ss,sht,val01,val02,val03,val04,val05,val06,val07,array,array1
ss = SpreadsheetApp.getActiveSpreadsheet();
sht = ss.getActiveSheet();
val01 = Browser.inputBox('数値を入力してください。(0以上の負でない整数)',Browser.Buttons.OK_CANCEL);
val02 = Browser.inputBox('シフトする桁数を入力してください。(-53~53までの数値)',Browser.Buttons.OK_CANCEL);
if(val01 == "cancel"|| val02 == "cancel"){
Browser.msgBox("処理を中止しました");
return;
} else {
array = [[val01,val02]];
sht.getRange(2,2,1,2).setValues(array);
val03 = '=DEC2BIN(B2)';
val04 = '=DEC2BIN(C2)';
val05 = '=DEC2BIN(D2)';
array1 = [[val03,val04,val05]];
sht.getRange(3,2,1,3).setValues(array1);
// BITRSHIFT関数をセット
val06 = sht.getRange("D2").setFormula('=BITRSHIFT('+val01+','+val02+')');
val07 = val06.getValue();
Browser.msgBox("BITRSHIFTの結果は「"+val07+"」です");
}
}

実行結果をGIFで

BITRSHIFT_GAS

OYAKUN
OYAKUN
inputBoxへ数値とシフト桁数を入力することで、D2セルへBITRSHIFTの結果を返しています。(入力しなければキャンセルに)

BITRSHIFT関数を使うときの注意点

注意1. 引数が制約外の場合は#NUM!エラーを返す

BITRSHIFT関数は、引数に制約外の数値を指定すると#NUM!エラーを返します。

以下にサンプルを記載します。

項目 数値 ビット数 BITRSHIFT
の計算結果
10進数 0 54 #NUM!

BITRSHIFT_error1

OYAKUN
OYAKUN
C2に「54]といった、「-52~53」以上の数値を指定したことで、D2のBITRSHIFT関数の算出結果が#NUM!エラーになっていることが分かります。
補足

BITRSHIFT関数ではシフト桁数を53にする場合、数値に0以上の値を指定すると#NUM!エラーを返します。

注意2. 数値が2^48(-1)より大きい値だと#NUM!エラーを返す

BITRSHIFT関数では、数値が2^48(-1)より大きい値だと#NUM!エラーを返します

以下にサンプルを記載します。

項目 数値 ビット数 BITRSHIFT
の計算結果
10進数 =2^48 0 #NUM!

bitrshift_error2

OYAKUN
OYAKUN
B2セルの値が「=2^48」(281474976710656)の場合、D2セルのBITRSHIFT関数の結果が#NUM!エラーに変わったことが分かります。
補足

BITRSHIFT関数では数値を「=2^47」にする場合、シフト桁数に0以上の値を指定すると#NUM!エラーを返します。

注意3. 引数に数値以外の値を指定すると#VALUE!エラーを返す

BITRSHIFT関数では、引数に数値以外を指定すると#VALUE!エラーを返します

以下にサンプルを記載します。

項目 数値 ビット数 BITRSHIFT
の計算結果
10進数 A 0 #VALUE!

BITRSHIFT_error3

OYAKUN
OYAKUN
B2セルに「A」と数値以外の値を指定したところ、D2セルのBITRSHIFT関数の算出結果が#VALUE!エラーを返していることが分かります。
補足

BITRSHIFT関数ではシフト桁数に数値以外の値を指定しても、#VALUE!エラーを返します。ただし、文字列の数値"3"を数値の「3」へ、プール値TRUEを「1」へ強制変換することは可能です。

BITRSHIFT関数の使い方. ExcelとGoogleスプレッドシートとの違い

BITRSHIFT関数は、ExcelとGoogleスプレッドシートで基本的な使い方に相違はありません。シフト数に負の値を指定することで、BITLSHIFT関数と同じ結果となる動作も、Excel/スプレッドシートともに同じです。

BITRSHIFT関数の使い方 まとめ

BITRSHIFT関数の使い方でした。 有効に活用するには、

  • シフト桁数に「-52~53」以上の数値を指定しない
  • 数値に2^48(-1)を指定しない
  • 引数にテキストなど数値以外を指定しない

といった感じですね。

DEC2BIN関数と合わせて使うことで、右にシフトした結果が分かりやすくなります。

OYAKUN
OYAKUN
BITRSHIFT関数を使うことで、簡単にビット数で右にシフト演算させることができますね。

関連記事: BTILSHIFT関数の使い方|ビットを指定した桁数だけ左へシフトする
関連記事: BITOR関数の使い方|2 つの数値のビット単位の ブール値'OR' を返す
関連記事: BITAND関数の使い方| 数値2つのビット単位の論理積を返す
関連記事: BETAINV関数の使い方|β分布区間に対しβ累積分布の逆関数の値を返す