<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>BITRSHIFT &#8211; biz-tactics</title>
	<atom:link href="https://mashukabu.com/tag/bitrshift/feed/" rel="self" type="application/rss+xml" />
	<link>https://mashukabu.com</link>
	<description></description>
	<lastBuildDate>Thu, 04 Jun 2026 14:26:07 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://mashukabu.com/wp-content/uploads/2022/04/cropped-site-icon-32x32.png</url>
	<title>BITRSHIFT &#8211; biz-tactics</title>
	<link>https://mashukabu.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>スプレッドシートのBITRSHIFT関数の使い方｜ビット右シフトで2分の1計算とフラグ抽出</title>
		<link>https://mashukabu.com/spreadsheet-bitrshift-function/</link>
					<comments>https://mashukabu.com/spreadsheet-bitrshift-function/#respond</comments>
		
		<dc:creator><![CDATA[まっしゅ]]></dc:creator>
		<pubDate>Tue, 28 Apr 2026 14:26:53 +0000</pubDate>
				<category><![CDATA[Googleスプレッドシート]]></category>
		<category><![CDATA[BITRSHIFT]]></category>
		<category><![CDATA[エンジニアリング関数]]></category>
		<category><![CDATA[スプレッドシート]]></category>
		<category><![CDATA[ビット演算]]></category>
		<category><![CDATA[フラグ管理]]></category>
		<category><![CDATA[右シフト]]></category>
		<guid isPermaLink="false">https://mashukabu.com/?p=6327</guid>

					<description><![CDATA[GoogleスプレッドシートのBITRSHIFT関数の使い方を解説。ビットを右にシフトして2分の1・4分の1・8分の1を高速計算する基本から、データ容量のバイト→KB→MB換算・パッキング値の分解・権限フラグの読み取りまで実例付きで紹介します。エラー対処法やBITLSHIFT・BITAND・BITORとの使い分けも網羅。]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">「バイト単位のファイルサイズをKBやMBに換算したい&#8230;」「パッキングされた数値からRGB各色を取り出したい&#8230;」</p>



<p class="wp-block-paragraph">スプレッドシートでデータ容量の換算表を作ったり、ビットフラグから個別の値を読み取ったりしていると、「2のN乗で割る計算をシンプルに書きたい」と感じる場面が出てきますよね。<code>=INT(値/POWER(2, n))</code> でも書けますが、ビット演算の文脈ではもう少し読みやすい方法がほしくなります。</p>



<p class="wp-block-paragraph">そんなときに便利なのがGoogleスプレッドシートのBITRSHIFT関数です。指定した数値のビットを右にずらすだけで、「値を半分・4分の1・8分の1にする」「上位ビットを抽出する」といった処理を一発でこなせますよ。</p>



<p class="wp-block-paragraph">しかも結果は数値型で返るので、BITANDやBITORと組み合わせてパッキングされた値の分解や容量換算をスマートに書けます。Excelとも互換性があるため、ファイルをやり取りする現場でも安心して使えますね。</p>



<p class="wp-block-paragraph">この記事では、スプレッドシートのBITRSHIFT関数の基本から2分の1系列の計算・データ容量の単位換算・RGB値のアンパックまで解説します。BITLSHIFT・BITAND・BITORとの使い分けやエラー対処法にも触れていきますよ。</p>




  <div id="toc" class="toc tnt-number toc-center tnt-number border-element"><input type="checkbox" class="toc-checkbox" id="toc-checkbox-1" checked><label class="toc-title" for="toc-checkbox-1">目次</label>
    <div class="toc-content">
    <ol class="toc-list open"><li><a href="#toc1" tabindex="0">スプレッドシートのBITRSHIFT関数とは？</a></li><li><a href="#toc2" tabindex="0">BITRSHIFT関数の書き方（構文と引数）</a><ol><li><a href="#toc3" tabindex="0">基本構文</a></li><li><a href="#toc4" tabindex="0">引数の詳細</a></li></ol></li><li><a href="#toc5" tabindex="0">ビット右シフトのイメージ表</a></li><li><a href="#toc6" tabindex="0">BITRSHIFT関数の基本的な使い方</a><ol><li><a href="#toc7" tabindex="0">数値を直接指定する</a></li><li><a href="#toc8" tabindex="0">セル参照で指定する</a></li><li><a href="#toc9" tabindex="0">ARRAYFORMULAで一括シフトする</a></li></ol></li><li><a href="#toc10" tabindex="0">実務活用例1：データ容量のバイト→KB→MB→GB換算</a><ol><li><a href="#toc11" tabindex="0">容量換算は「10ビット右シフト = ÷1024」</a></li><li><a href="#toc12" tabindex="0">バイト数を一覧で換算する</a></li><li><a href="#toc13" tabindex="0">BITLSHIFTとセットで覚える</a></li></ol></li><li><a href="#toc14" tabindex="0">実務活用例2：パッキングされたRGB値を分解する</a><ol><li><a href="#toc15" tabindex="0">10進数のカラーコードからRGB各値を取り出す</a></li><li><a href="#toc16" tabindex="0">「右シフト → BITANDでマスク」の定石パターン</a></li></ol></li><li><a href="#toc17" tabindex="0">実務活用例3：ビットフラグから権限の有無を効率的に判定する</a><ol><li><a href="#toc18" tabindex="0">権限フラグの設計例</a></li><li><a href="#toc19" tabindex="0">BITRSHIFTで特定ビットを判定する</a></li><li><a href="#toc20" tabindex="0">一覧表で権限マトリクスを作る</a></li></ol></li><li><a href="#toc21" tabindex="0">BITRSHIFTとBITLSHIFTの関係</a></li><li><a href="#toc22" tabindex="0">BITRSHIFT関数とExcelの互換性</a></li><li><a href="#toc23" tabindex="0">エラーの種類と対処法</a><ol><li><a href="#toc24" tabindex="0">#NUM! エラー</a></li><li><a href="#toc25" tabindex="0">#VALUE! エラー</a></li><li><a href="#toc26" tabindex="0">#N/A エラー</a></li><li><a href="#toc27" tabindex="0">エラー対処：IFERRORで包む</a></li></ol></li><li><a href="#toc28" tabindex="0">他のビット演算関数との使い分け</a></li><li><a href="#toc29" tabindex="0">まとめ</a></li></ol>
    </div>
  </div>

<h2 class="wp-block-heading"><span id="toc1">スプレッドシートのBITRSHIFT関数とは？</span></h2>



<p class="wp-block-paragraph">スプレッドシートのBITRSHIFT関数（ビットライトシフト関数）は、指定した数値のビットを右方向に指定した桁数だけずらす関数です。結果は10進数の数値で返ります。</p>



<p class="wp-block-paragraph">「ビットを右にずらす」とは、数値を2進数に変換して各ビットを右に移動させる計算のことです。右にあふれたビットは消え、空いた左側には0が入ります。1桁右にずらすたびに値が半分になるのが大きな特徴ですよ。</p>



<p class="wp-block-paragraph">たとえば、20を2桁右にシフトする場合を見てみましょう。</p>



<ul class="wp-block-list"><li>20 を2進数にすると → <code>00010100</code></li><li>2桁右にシフト → <code>00000101</code>（= 10進数の5）</li></ul>



<p class="wp-block-paragraph">20 ÷ 2 ÷ 2 = 5 という計算になっていますね。「右に1桁シフト = 2分の1」と覚えると感覚がつかみやすいですよ。</p>



<p class="wp-block-paragraph">GoogleスプレッドシートのBITRSHIFT関数は、ExcelのBITRSHIFT関数と同じ構文で使えます。データ容量の換算やパッキングされた値の分解など、ビット演算を扱う業務で活躍する関数ですね。</p>



<h2 class="wp-block-heading"><span id="toc2">BITRSHIFT関数の書き方（構文と引数）</span></h2>



<h3 class="wp-block-heading"><span id="toc3">基本構文</span></h3>



<pre class="wp-block-code"><code>=BITRSHIFT(値, シフト量)</code></pre>



<p class="wp-block-paragraph">引数は2つとも必須です。省略するとエラーになります。</p>



<h3 class="wp-block-heading"><span id="toc4">引数の詳細</span></h3>



<figure class="wp-block-table"><table><thead><tr><th>引数</th><th>必須/任意</th><th>説明</th></tr></thead><tbody><tr><td>値</td><td>必須</td><td>右シフトする対象の数値（0以上の整数）</td></tr><tr><td>シフト量</td><td>必須</td><td>右にずらすビット数（-53〜53の整数）</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">第1引数の「値」には、0以上かつ<code>(2^48)-1</code>（= 281,474,976,710,655）以下の整数を指定します。</p>



<p class="wp-block-paragraph">第2引数の「シフト量」は通常は正の整数を指定して右シフトしますが、負の値を指定すると左シフト（BITLSHIFTと同じ動き）になります。シフト量の絶対値は53以下である必要がありますよ。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>TIP</strong></p><p>BITRSHIFT関数はExcelとの互換性があるため、ExcelファイルをGoogleスプレッドシートで開いてもそのまま動作します。逆もまた然りです。バージョン違いで挙動が変わる心配はいりませんよ。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc5">ビット右シフトのイメージ表</span></h2>



<p class="wp-block-paragraph">BITRSHIFT関数の動きをイメージしやすいように、よく使う組み合わせを表にまとめました。</p>



<figure class="wp-block-table"><table><thead><tr><th>値</th><th>シフト量</th><th>値（2進）</th><th>シフト後（2進）</th><th>結果（10進）</th><th>倍率</th></tr></thead><tbody><tr><td>8</td><td>0</td><td>1000</td><td>1000</td><td>8</td><td>×1</td></tr><tr><td>8</td><td>1</td><td>1000</td><td>0100</td><td>4</td><td>×1/2</td></tr><tr><td>8</td><td>2</td><td>1000</td><td>0010</td><td>2</td><td>×1/4</td></tr><tr><td>8</td><td>3</td><td>1000</td><td>0001</td><td>1</td><td>×1/8</td></tr><tr><td>12</td><td>2</td><td>1100</td><td>0011</td><td>3</td><td>×1/4</td></tr><tr><td>40</td><td>3</td><td>101000</td><td>000101</td><td>5</td><td>×1/8</td></tr><tr><td>112</td><td>4</td><td>1110000</td><td>0000111</td><td>7</td><td>×1/16</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">「シフト量が1増えるたびに結果が半分になる」というルールが見えてきますね。<code>BITRSHIFT(値, n)</code> は <code>INT(値 / 2^n)</code> と同じ結果を返します。</p>



<p class="wp-block-paragraph">このルールから、BITRSHIFTには次の2つの代表的な使い道が生まれます。</p>



<ul class="wp-block-list"><li><strong>2のN乗で割る高速計算</strong>: バイト→KB→MBのような単位換算を1024ずつ割る代わりにシフト量で表現できる</li><li><strong>ビット位置の抽出</strong>: パッキングされた値から「特定ビット位置以降」を取り出せる（RGB値の分解など）</li></ul>



<p class="wp-block-paragraph">この特徴を活かすと、容量換算表やパッキングデータの読み取りがぐっと楽になりますよ。</p>



<h2 class="wp-block-heading"><span id="toc6">BITRSHIFT関数の基本的な使い方</span></h2>



<h3 class="wp-block-heading"><span id="toc7">数値を直接指定する</span></h3>



<p class="wp-block-paragraph">もっともシンプルな使い方から見ていきましょう。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/03/spreadsheet-sumif-function_01_data_sample-table.png" alt="01 data sample table" /></figure>



<pre class="wp-block-code"><code>=BITRSHIFT(20, 2)</code></pre>



<p class="wp-block-paragraph">結果は「5」です。先ほどの説明のとおり、20を2桁右にシフトすると <code>00000101</code>（= 5）になります。20 ÷ 4 = 5 と同じ結果ですね。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/02_formula_bitrshift-basic.png" alt="02 formula bitrshift basic" /></figure>



<pre class="wp-block-code"><code>=BITRSHIFT(8, 3)</code></pre>



<p class="wp-block-paragraph">結果は「1」です。8を3桁右にシフトすると <code>0001</code>（= 1）になります。8 ÷ 8 = 1 と同じ意味ですよ。</p>



<h3 class="wp-block-heading"><span id="toc8">セル参照で指定する</span></h3>



<p class="wp-block-paragraph">実務では、セルに入っている値をシフトする場面が多いです。A2に「12」、B2に「2」が入っている場合は次のように書きます。</p>



<pre class="wp-block-code"><code>=BITRSHIFT(A2, B2)</code></pre>



<p class="wp-block-paragraph">結果は「3」です。12を2桁右にシフトすると <code>0011</code>（= 3）になります。12 ÷ 4 = 3 と同じですね。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/03_result_bitrshift-basic.png" alt="03 result bitrshift basic" /></figure>



<p class="wp-block-paragraph">途中の2進数表現を確認したいときは、<a href="https://mashukabu.com/spreadsheet-dec2bin-function/">DEC2BIN関数</a>（10進数を2進数の文字列に変換する関数）を組み合わせると分かりやすいですよ。</p>



<pre class="wp-block-code"><code>=DEC2BIN(A2)               → &quot;1100&quot;
=DEC2BIN(BITRSHIFT(A2, B2)) → &quot;11&quot;</code></pre>



<h3 class="wp-block-heading"><span id="toc9">ARRAYFORMULAで一括シフトする</span></h3>



<p class="wp-block-paragraph">スプレッドシートならではの強みが、ARRAYFORMULA関数との組み合わせです。</p>



<pre class="wp-block-code"><code>=ARRAYFORMULA(BITRSHIFT(1024, A2:A10))</code></pre>



<p class="wp-block-paragraph">A列に並んだシフト量に応じて、1024を順番に右シフトした結果を一括で取得できます。</p>



<figure class="wp-block-table"><table><thead><tr><th>A列: シフト量</th><th>結果（BITRSHIFT）</th></tr></thead><tbody><tr><td>0</td><td>1024</td></tr><tr><td>1</td><td>512</td></tr><tr><td>2</td><td>256</td></tr><tr><td>3</td><td>128</td></tr><tr><td>4</td><td>64</td></tr><tr><td>5</td><td>32</td></tr><tr><td>6</td><td>16</td></tr><tr><td>7</td><td>8</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">2の累乗で割っていく一覧が、1つの数式で完成しますよ。半減期テーブルや段階的な値の減少をシミュレーションしたいときにも便利ですね。</p>



<h2 class="wp-block-heading"><span id="toc10">実務活用例1：データ容量のバイト→KB→MB→GB換算</span></h2>



<p class="wp-block-paragraph">BITRSHIFT関数のもっとも代表的な活用が、データ容量の単位換算です。</p>



<h3 class="wp-block-heading"><span id="toc11">容量換算は「10ビット右シフト = ÷1024」</span></h3>



<p class="wp-block-paragraph">データ容量は基本的に2の10乗（= 1024）ごとに単位が変わります。1KB = 1024バイト、1MB = 1024KB、1GB = 1024MB のように、各単位は前の単位を1024で割った値ですよ。</p>



<p class="wp-block-paragraph">これを BITRSHIFT で表すと、「10ビット右シフト = 1024で割る」になります。</p>



<pre class="wp-block-code"><code>=BITRSHIFT(A2, 10)  → KB単位（バイトを1024で割る）
=BITRSHIFT(A2, 20)  → MB単位（バイトを1024×1024で割る）
=BITRSHIFT(A2, 30)  → GB単位（バイトを1024×1024×1024で割る）
=BITRSHIFT(A2, 40)  → TB単位（バイトを1024×1024×1024×1024で割る）</code></pre>



<p class="wp-block-paragraph">シフト量を10ずつ増やすだけで、KB→MB→GB→TBの段階が自動で出てきますね。換算表を作るときに便利な書き方です。</p>



<h3 class="wp-block-heading"><span id="toc12">バイト数を一覧で換算する</span></h3>



<p class="wp-block-paragraph">A2に「2147483648」（= 2GB相当のバイト数）が入っているとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>数式</th><th>結果</th><th>意味</th></tr></thead><tbody><tr><td><code>=BITRSHIFT(A2, 10)</code></td><td>2097152</td><td>KB</td></tr><tr><td><code>=BITRSHIFT(A2, 20)</code></td><td>2048</td><td>MB</td></tr><tr><td><code>=BITRSHIFT(A2, 30)</code></td><td>2</td><td>GB</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">シンプルに「÷1024」「÷1024×1024」を表現できますね。<code>POWER(2, 10)</code> を使った書き方より直感的で、容量計算の意図が読み手に伝わりやすいですよ。</p>



<figure class="wp-block-image"><img decoding="async" src="https://mashukabu.com/wp-content/uploads/2026/06/04_result_bitrshift-capacity.png" alt="04 result bitrshift capacity" /></figure>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>BITRSHIFTは整数除算（小数点以下を切り捨てる割り算）と同じ動きをします。<code>BITRSHIFT(1025, 10)</code> の結果は「1」になり、小数点以下は保持されません。小数まで欲しい場合は <code>=A2 / 1024</code> のように通常の割り算を使ってくださいね。</p></blockquote>



<h3 class="wp-block-heading"><span id="toc13">BITLSHIFTとセットで覚える</span></h3>



<p class="wp-block-paragraph">逆方向の単位換算（KB→MB→GB ではなく KB→バイト など）には、BITLSHIFT関数（左シフト関数）を使います。</p>



<pre class="wp-block-code"><code>=BITLSHIFT(1, 10)  → 1024（1KB = 1024B）
=BITLSHIFT(1, 20)  → 1048576（1MB = 1024KB）</code></pre>



<p class="wp-block-paragraph">「単位を上げるときはBITRSHIFT、単位を下げるときはBITLSHIFT」とペアで覚えておくと混乱しませんね。詳しくは<a href="https://mashukabu.com/spreadsheet-bitlshift-function/">BITLSHIFT関数の記事</a>も合わせて読んでみてください。</p>



<h2 class="wp-block-heading"><span id="toc14">実務活用例2：パッキングされたRGB値を分解する</span></h2>



<p class="wp-block-paragraph">BITRSHIFTを使うと、複数の小さな数値を1つの大きな数値にパッキングしたデータから、各値を取り出せます。色コード（RGB値）や日付の年月日コードなど、「複数の情報が1つの値に詰め込まれている」場面で活躍しますよ。</p>



<h3 class="wp-block-heading"><span id="toc15">10進数のカラーコードからRGB各値を取り出す</span></h3>



<p class="wp-block-paragraph">色を表すRGB値は、それぞれ赤・緑・青を0〜255の数値で持ちます。HTMLでいう <code>#FF8040</code> のような色は、10進数では「16744512」という1つの整数で表せますよ。</p>



<p class="wp-block-paragraph">この値からRGB各値を取り出すには、BITRSHIFTとBITANDを組み合わせます。</p>



<pre class="wp-block-code"><code>=BITRSHIFT(A2, 16)              → 赤の値（上位8ビットを取り出す）
=BITAND(BITRSHIFT(A2, 8), 255)  → 緑の値（中位8ビットを取り出す）
=BITAND(A2, 255)                 → 青の値（下位8ビットを取り出す）</code></pre>



<p class="wp-block-paragraph">A2に「16744512」が入っているとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>ステップ</th><th>数式</th><th>結果</th></tr></thead><tbody><tr><td>16ビット右シフトで赤を最下位に持ってくる</td><td><code>BITRSHIFT(16744512, 16)</code></td><td>255</td></tr><tr><td>8ビット右シフト後にBITANDで下位8ビットだけ残す</td><td><code>BITAND(BITRSHIFT(16744512, 8), 255)</code></td><td>128</td></tr><tr><td>BITANDで下位8ビットだけ残す</td><td><code>BITAND(16744512, 255)</code></td><td>64</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">結果は赤=255、緑=128、青=64で、<code>#FF8040</code> 相当の色情報が取り出せましたね。1セルに保存した色コードから、シェーディングやスタイル設定に使える各色値を分離できますよ。</p>



<p class="wp-block-paragraph">!<a href="https://mashukabu.com/_images/spreadsheet-bitrshift-function/05_result_bitrshift-rgb.png/">_images/spreadsheet-bitrshift-function/05_result_bitrshift-rgb.png</a></p>



<h3 class="wp-block-heading"><span id="toc16">「右シフト → BITANDでマスク」の定石パターン</span></h3>



<p class="wp-block-paragraph">パッキングされたデータから特定ビット位置の値を取り出す手順は、次の2ステップで覚えると応用しやすいですよ。</p>



<ol class="wp-block-list"><li><strong>BITRSHIFTで取り出したい位置を一番下に持ってくる</strong>（<code>BITRSHIFT(値, シフト量)</code>）</li><li><strong>BITANDで必要なビット数だけマスクする</strong>（<code>BITAND(結果, 2^ビット数 - 1)</code>）</li></ol>



<p class="wp-block-paragraph">たとえば「中位8ビットだけ取り出したい」なら、8ビット右シフトしてからBITAND(255)（= 2^8 &#8211; 1）でマスクする、という流れですね。詳しい仕組みは<a href="https://mashukabu.com/spreadsheet-bitand-function/">BITAND関数の記事</a>も合わせて確認してみてくださいね。</p>



<h2 class="wp-block-heading"><span id="toc17">実務活用例3：ビットフラグから権限の有無を効率的に判定する</span></h2>



<p class="wp-block-paragraph">権限管理をビットフラグで行っている場合、BITRSHIFTを使うと「nビット目が立っているか？」を1つの数式で判定できます。</p>



<h3 class="wp-block-heading"><span id="toc18">権限フラグの設計例</span></h3>



<p class="wp-block-paragraph">たとえば、社内システムの権限を以下のようにビットフラグで管理しているとします。</p>



<figure class="wp-block-table"><table><thead><tr><th>ビット位置</th><th>権限</th><th>値（10進）</th><th>値（2進）</th></tr></thead><tbody><tr><td>0桁目</td><td>閲覧</td><td>1</td><td>0001</td></tr><tr><td>1桁目</td><td>編集</td><td>2</td><td>0010</td></tr><tr><td>2桁目</td><td>削除</td><td>4</td><td>0100</td></tr><tr><td>3桁目</td><td>管理</td><td>8</td><td>1000</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">ユーザーAの権限値が「11」（= 0001 + 0010 + 1000 = 閲覧＋編集＋管理）だったとします。</p>



<h3 class="wp-block-heading"><span id="toc19">BITRSHIFTで特定ビットを判定する</span></h3>



<p class="wp-block-paragraph">「nビット目が立っているか？」を調べるには、対象の値をnビット右シフトしてから、最下位ビットだけを残します。</p>



<pre class="wp-block-code"><code>=BITAND(BITRSHIFT(A2, 0), 1)  → 0桁目（閲覧）が立っているか
=BITAND(BITRSHIFT(A2, 1), 1)  → 1桁目（編集）が立っているか
=BITAND(BITRSHIFT(A2, 2), 1)  → 2桁目（削除）が立っているか
=BITAND(BITRSHIFT(A2, 3), 1)  → 3桁目（管理）が立っているか</code></pre>



<p class="wp-block-paragraph">A2が「11」（2進数で <code>1011</code>）の場合、結果は順に「1, 1, 0, 1」となります。閲覧・編集・管理が「1」（権限あり）、削除だけが「0」（権限なし）と判定できますね。</p>



<h3 class="wp-block-heading"><span id="toc20">一覧表で権限マトリクスを作る</span></h3>



<p class="wp-block-paragraph">ARRAYFORMULAと組み合わせると、複数ユーザー × 複数権限のマトリクスを一気に作れます。</p>



<figure class="wp-block-table"><table><thead><tr><th>ユーザー</th><th>権限値</th><th>閲覧</th><th>編集</th><th>削除</th><th>管理</th></tr></thead><tbody><tr><td>A</td><td>11</td><td>1</td><td>1</td><td>0</td><td>1</td></tr><tr><td>B</td><td>7</td><td>1</td><td>1</td><td>1</td><td>0</td></tr><tr><td>C</td><td>8</td><td>0</td><td>0</td><td>0</td><td>1</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">各ユーザーの権限値を「BITRSHIFT → BITAND(1)」で各ビットに分解するだけで、権限マトリクスが完成しますよ。<code>=IF(BITAND(BITRSHIFT($B2, ビット位置), 1)=1, "○", "×")</code> のように○×に変換しても見やすいですね。</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><strong>NOTE</strong></p><p>BITRSHIFTで「位置を取り出す」、BITAND/BITORで「合成・抽出」、BITLSHIFTで「位置を作る」、BITXORで「トグル」と覚えておくと、ビット演算4兄弟の役割分担がスッキリします。BITRSHIFTは「読み取り・分解」のフェーズで活躍しますよ。</p></blockquote>



<h2 class="wp-block-heading"><span id="toc21">BITRSHIFTとBITLSHIFTの関係</span></h2>



<p class="wp-block-paragraph">BITRSHIFT（右シフト）とBITLSHIFT（左シフト）は、シフト方向が逆のペア関数です。第2引数の符号で動きが切り替わります。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>動作</th><th>値の変化</th><th>同等の演算</th></tr></thead><tbody><tr><td><code>BITRSHIFT(値, n)</code></td><td>右にnビットシフト</td><td>n回ぶん半分</td><td><code>INT(値 / 2^n)</code></td></tr><tr><td><code>BITLSHIFT(値, n)</code></td><td>左にnビットシフト</td><td>n回ぶん2倍</td><td><code>値 × 2^n</code></td></tr></tbody></table></figure>



<p class="wp-block-paragraph">実は、BITRSHIFTの第2引数に負の値を渡すと、BITLSHIFTと同じ結果になります。</p>



<pre class="wp-block-code"><code>=BITRSHIFT(5, -3)   → 40（5を3ビット左シフト）
=BITLSHIFT(5, 3)    → 40（同じ結果）</code></pre>



<p class="wp-block-paragraph">ただし、可読性のためには「右シフトはBITRSHIFT、左シフトはBITLSHIFT」と分けて書く方がおすすめですよ。読み手が数式の意図をすぐに把握できますね。</p>



<h2 class="wp-block-heading"><span id="toc22">BITRSHIFT関数とExcelの互換性</span></h2>



<p class="wp-block-paragraph">GoogleスプレッドシートのBITRSHIFT関数は、ExcelのBITRSHIFT関数と仕様が同じです。構文・引数・有効範囲・エラー条件のすべてが一致しています。</p>



<p class="wp-block-paragraph">ExcelファイルをGoogleスプレッドシートで開いた場合でも、BITRSHIFT関数はそのまま動作します。逆にスプレッドシートで作成した数式をExcelで開いても問題ありませんよ。</p>



<p class="wp-block-paragraph">ExcelのBITRSHIFT関数はExcel 2013以降で利用できます。古いバージョンのExcelファイルを扱うときは、互換性に注意してくださいね。</p>



<h2 class="wp-block-heading"><span id="toc23">エラーの種類と対処法</span></h2>



<h3 class="wp-block-heading"><span id="toc24">#NUM! エラー</span></h3>



<p class="wp-block-paragraph">次のいずれかに当てはまると <code>#NUM!</code> エラーになります。</p>



<ul class="wp-block-list"><li>第1引数（値）に負の数を指定した</li><li>第1引数が <code>(2^48)-1</code>（= 281,474,976,710,655）を超えている</li><li>第1引数に小数を指定した</li><li>第2引数（シフト量）の絶対値が53を超えている</li></ul>



<pre class="wp-block-code"><code>=BITRSHIFT(-1, 2)             → #NUM!（負の数は不可）
=BITRSHIFT(2.5, 2)            → #NUM!（小数は不可）
=BITRSHIFT(1024, 60)          → #NUM!（シフト量が大きすぎる）</code></pre>



<p class="wp-block-paragraph">対処法は、INT関数（小数を切り捨てて整数化する関数）で値を整数化し、シフト量も適切な範囲に収めることです。</p>



<pre class="wp-block-code"><code>=BITRSHIFT(INT(A1), MIN(B1, 47))</code></pre>



<h3 class="wp-block-heading"><span id="toc25">#VALUE! エラー</span></h3>



<p class="wp-block-paragraph">引数に文字列を指定すると <code>#VALUE!</code> エラーになります。テキストとして取り込んだ数値をそのまま渡すと発生しがちです。</p>



<p class="wp-block-paragraph">対処法はVALUE関数（文字列を数値に変換する関数）で数値化することです。</p>



<pre class="wp-block-code"><code>=BITRSHIFT(VALUE(A1), VALUE(B1))</code></pre>



<h3 class="wp-block-heading"><span id="toc26">#N/A エラー</span></h3>



<p class="wp-block-paragraph">引数が不足している場合は <code>#N/A</code> エラーになります。BITRSHIFTは引数2つが必須なので、片方しか渡していないと発生しますよ。</p>



<pre class="wp-block-code"><code>=BITRSHIFT(20)                → #N/A（引数不足）</code></pre>



<h3 class="wp-block-heading"><span id="toc27">エラー対処：IFERRORで包む</span></h3>



<p class="wp-block-paragraph">入力データが信頼できない場合は、IFERRORで包んでおくと安心です。</p>



<pre class="wp-block-code"><code>=IFERROR(BITRSHIFT(A2, B2), 0)</code></pre>



<p class="wp-block-paragraph">エラー時に0を返すようにしておけば、後続の集計が止まらずに済みますよ。</p>



<h2 class="wp-block-heading"><span id="toc28">他のビット演算関数との使い分け</span></h2>



<p class="wp-block-paragraph">スプレッドシートにはBITRSHIFT以外にもビット演算関数が用意されています。場面に応じて使い分けましょう。</p>



<figure class="wp-block-table"><table><thead><tr><th>関数</th><th>演算</th><th>説明</th><th>使いどころ</th></tr></thead><tbody><tr><td><strong>BITRSHIFT</strong></td><td>右シフト</td><td>ビットを右にずらす</td><td>値の半分計算、データのアンパック、容量単位の換算</td></tr><tr><td>BITLSHIFT</td><td>左シフト</td><td>ビットを左にずらす</td><td>値の2倍・4倍計算、フラグ位置の生成、データパッキング</td></tr><tr><td>BITAND</td><td>AND（論理積）</td><td>両方1のビットだけ残す</td><td>権限チェック・フラグ抽出</td></tr><tr><td>BITOR</td><td>OR（論理和）</td><td>どちらか1のビットを残す</td><td>権限の付与・フラグの合成</td></tr><tr><td>BITXOR</td><td>XOR（排他的論理和）</td><td>異なるビットだけ残す</td><td>フラグの切り替え（トグル）・差分検出</td></tr></tbody></table></figure>



<p class="wp-block-paragraph">BITRSHIFTは「パッキングされたデータから特定の位置を読み取りたい」「2のN乗で割る計算をしたい」ときに使います。設計したフラグを実際に運用する場面では、BITAND（<a href="https://mashukabu.com/spreadsheet-bitand-function/">BITAND関数の記事</a>）でチェック、BITOR（<a href="https://mashukabu.com/spreadsheet-bitor-function/">BITOR関数の記事</a>）で合成、BITXOR（<a href="https://mashukabu.com/spreadsheet-bitxor-function/">BITXOR関数の記事</a>）でトグルという役割分担になりますね。</p>



<p class="wp-block-paragraph">「パッキングはBITLSHIFT、アンパックはBITRSHIFT、運用はAND/OR/XOR」という流れを覚えておくと、業務でビット演算を使うときの全体像が見えやすくなりますよ。</p>



<h2 class="wp-block-heading"><span id="toc29">まとめ</span></h2>



<p class="wp-block-paragraph">GoogleスプレッドシートのBITRSHIFT関数は、指定した数値のビットを右方向にずらす関数です。データ容量の単位換算やパッキングされた値の分解、ビットフラグの読み取りなど、ビット演算の「読み取り」面で活躍してくれますよ。</p>



<ul class="wp-block-list"><li>構文は <code>=BITRSHIFT(値, シフト量)</code>、両引数とも必須</li><li>「右に1桁シフト = 2分の1」のルールで値が減っていく</li><li><code>BITRSHIFT(値, 10)</code> でバイト→KB、<code>BITRSHIFT(値, 20)</code> でバイト→MB の換算ができる</li><li>ARRAYFORMULAと組み合わせて2のN乗で割る一覧を一発で作れる</li><li>「BITRSHIFT → BITAND」の組み合わせでパッキングされたRGB値を分解できる</li><li>権限フラグから「nビット目が立っているか」を効率的に判定できる</li><li>ExcelのBITRSHIFT関数と完全互換（Excel 2013以降）</li></ul>



<p class="wp-block-paragraph">ビット演算は最初こそ難しく見えますが、BITRSHIFT関数を使えば容量換算やパッキングデータの分解がシンプルな数式で書けるようになります。まずは「<code>BITRSHIFT(バイト数, 10)</code>」の容量換算パターンから試してみてくださいね。</p>
]]></content:encoded>
					
					<wfw:commentRss>https://mashukabu.com/spreadsheet-bitrshift-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
