『ボヘミアン・ラプソディ』はなぜ人々を魅了したのか >>

Excelでビット演算子の
左シフト演算をさせることは
でるでしょうか?
0xff<<8 の演算をさせたいのですが
何か関数はあるでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (1件)

エクセルにシフト演算子は無いような気がしますが,nビットシフトさせたいのであれば,2のn乗を掛けたら良いと思います。



例:A1セルを8ビット左シフトしたい場合
=A1*2^8

例:A1セルを8ビット右シフトしたい場合
=int(A1/2^8)
    • good
    • 3

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで論理和などの値をセルに書きこみたい。

エクセルで数値AとBの論理和等を取ってセルに書き込みたいのですがどこかに具体的な方法が書いたサイトなどないでしょうか?真偽値が欲しいのではなく(A&B)や(AorB)の値が欲しいと言うことです。マクロは使った事がありません。よろしくお願いします。

Aベストアンサー

> マクロは使った事がありません。

経験がないという意味だけであって、使いたくない或は使うことが
禁止なのでしょうか?

※ お使いの Excel のバージョンをお書きになっていませんので
  環境によって動作するかはわかりませんが。(2000,2003で確認)

マクロ(VBA)を使うことに抵抗がないのであればメニューから
ツール → マクロ → Visual Basic Editor

Visual Basic Editor のウィンドウが出ましたら、メニューから
挿入 → 標準モジュール

標準モジュールの右側にエディタが開きますので

Function AndValue(A,B)
AndValue = Val(A) And Val(B)
End Function

と書いて、Visual Basic Editor を閉じて(最小化でも構いません)
Excel の A1 と B1 のセルに適当な数値を入れて、C1 のセルにでも
「=AndValue(A1,B1) 」と入れてみて A1 と B1 に数値を And した
数値が C1 に出たら成功です。

あとはご自身で Or とか Xor など所望の関数を定義してあげれば
よろしいかと思われます。
# 提示させて頂いた関数をコピーして関数名を変えて And の部分のを
# Or などに置き換えるだけで済むかと思います。

マクロのセキュリティ設定によっては異なりますが、マクロを含む
データを保存した場合、次回からマクロが含まれているという警告が
でます。
保存したものを開く場合セキュリティが「中」以下になっていないと
動作しません。(バージョンによっては異るかもしれません)
※ ただし「低」にしないことをお薦めします。

マクロを残したくない場合は、結果のセルをコピーして「形式を指定
して貼り付け」などで値のみを残しておけばよろしいかと思います。
マクロの削除は Visual Basic Editor で Module1 を開放します。
# Module1 という名前は異る場合もあります。

> マクロは使った事がありません。

経験がないという意味だけであって、使いたくない或は使うことが
禁止なのでしょうか?

※ お使いの Excel のバージョンをお書きになっていませんので
  環境によって動作するかはわかりませんが。(2000,2003で確認)

マクロ(VBA)を使うことに抵抗がないのであればメニューから
ツール → マクロ → Visual Basic Editor

Visual Basic Editor のウィンドウが出ましたら、メニューから
挿入 → 標準モジュール

標準モジュールの右側にエディタが開きますので

Fu...続きを読む

Qエクセル2010で2進数の計算をするには

エクセル2010を使って2進数の乗算と加算を複数回行い、最後にそれぞれの答えをすべて加算したいのですが、こういうことは可能でしょうか。
また、最後の答えをすべて加算したときの桁数は100桁程度になると思います。
(できれば10進数をキーボードから入力すれば2進数の変換から複数回の乗算と加算などを自動で計算できれば大変ありがたいのですが)

書店で参考書を探したのですが、10進数→2進数、2進数→10進数の変換については載っているのですが、2進数の計算についてはどの本にも記述がありませんでした。

どうぞよろしくお願いします。

Aベストアンサー

2 進数では、乗法や除法も定義されます。0 x 0 = 0、0 x 1 = 0、1 x 0 = 0、1 x 1 = 1 となります。これを使うと、当たり前かもしれませんが、筆算もできます。例えば次のとおりです。

  1 0 1   =      1 x 2^2 + 0 x 2^1 + 1 x 2^0 = 5
x   1 1   =           1 x 2^1 + 1 x 2^0 = 3
―――――
  1 0 1
 1 0 1
―――――
 1 1 1 1   = 1 x 2^3 + 1 x 2^2 + 1 x 2^1 + 1 x 2^0 = 15


「整数である 2 進数」同士の計算そのものは、例えば =BIN2DEC(10)*BIN2DEC(110) といった具合にできるからいいのですが、質問文を読むと、桁数があまりにも多すぎなことが問題だと思います。

2^(100-1) = (2^100)/2
     = {(2^10)^10}/2
     = (1024^10)/2
     > (1000^10)/2
     = {(10^3)^10}/2
     = (10^30)/2
     = 5 x 10^29

となり、たとえ 10 進数で表示しても、0 が 29 個も並んだ数よりも更に大きいことになるわけだから、天文学的どころでは済まない、途方もない数だと分かります。せめて対数を取るくらいの工夫は必要でしょう。Excel の対数としては、LOG、LOG10、LN 関数が使えます。log x + log y = log xy というふうに、和から積を作れるのでしたね。

また、Excel の仕様では、誤差なく計算できる最大の桁数は 15 桁です。特に対数を取らない場合は、その点にも注意が必要です。


それから、BIN2DEC 関数は、符号を含めて 10 ビットまでの整数にしか対応できないことにも注意してください。つまり数字の部分は 9 ビットなので、-512 以上 511 以下の整数です。

小数も扱うには、(1)元の数を何倍かして小数点以下をなくす(整数化する)方法とか、(2)ユーザー定義関数その他の方法により 2 進の小数を 10 進の小数に直し、計算後に 10 から 2 に戻す方法などが考えられます。何倍かすると言っている意味は、10 進数を 10 倍すると小数点が右に一つ移動するのと同様に、2 進数では倍にすると小数点が動くという性質を使うということです。

次のページを参考にしてください。

2 進小数の求め方 http://oshiete.goo.ne.jp/qa/6756230.html
2 進小数の加法  http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1486952069

2 進数では、乗法や除法も定義されます。0 x 0 = 0、0 x 1 = 0、1 x 0 = 0、1 x 1 = 1 となります。これを使うと、当たり前かもしれませんが、筆算もできます。例えば次のとおりです。

  1 0 1   =      1 x 2^2 + 0 x 2^1 + 1 x 2^0 = 5
x   1 1   =           1 x 2^1 + 1 x 2^0 = 3
―――――
  1 0 1
 1 0 1
―――――
 1 1 1 1   = 1 x 2^3 + 1 x 2^2 + 1 x 2^1 + 1 x 2^0 = 15


「整数である 2 進数」同士の計算そのものは、例えば =BIN2DEC(10)*BIN2DEC(110) といった具合にでき...続きを読む

QEXCELでの16進数取り出し、上位桁と下位桁取り

恐れ入ります。詳しい方教えてください。

各セルに2000までの数値があるデータがあり、このデータを16進数表記で、上位2桁と下位2桁に分けたいと考えています。

例)
870  → &h03, &h66 (870は10進数で366が16進数、これを&hを付けて03と66に分けたい)
1926 → &h07, &h86 

="0x"&DEC2HEX(C4, 4)を使って16進数4桁にすることまでは調べたのですが、上位2桁、下位2桁に分けられず悩んでいます。

Aベストアンサー

いくつか方法はあるでしょうが、
A1に870があるとして
4桁固定でいいなら
上位2桁
=LEFT(DEC2HEX($A1,4),2)
下位2桁
=RIGHT(DEC2HEX($A1,4),2)

Qエクセル DEC2BIN 範囲外数値の演算

エクセルの2進数変換関数の「DEC2BIN」について、

-32768から32767の範囲の数値を符号付の16bitへ変換したく、
調べたところDEC2BIN関数にたどり着いたのですが、
-512から511の範囲外では、使用できず、エラーが返ってきます。

何か良い解決策は、ないでしょうか?
初めての質問となりますが、よろしくお願いいたします。

Aベストアンサー

#3,4です。

=RIGHT("0000000000000000"&DEC2BIN(INT(A1/256),8)&DEC2BIN(MOD(A1,256),8),16)

でどうでしよう。

QHEX2BIN関数の使い方。

HEX2BINを使用して16進数4桁を2進数に変換しようとしたところ=HEX2BIN(B2) (B2セルは6F67)としたところ#NUMエラーが出てしまいます。

B2を”B2”にすれば変換ができたのですが今度はオートフィルが使えなくなってしまいます。

なので、=HEX2BIN(B2)で変換できる方法か””をつかってもオートフィルで=HEX2BIN("C2")などにする方法を教えて下さい Excelは2007です。

Aベストアンサー

> としたところ#NUMエラーが出てしまいます。

ヘルプでは数値に指定できるのは40ビットってなってますが、~1FFより大きい16進数は指定できません。


> B2を”B2”にすれば変換ができたのですが

B2セルの内容でなくて、B2という16進数を変換しています。
セル指定してるわけでないので、オートフィル出来ないのは自明。


> なので、=HEX2BIN(B2)で変換できる方法か

B2セルに、
1FF
B2
なんかの桁数の少ない16進数を指定するか、2バイトずつ桁数分けて2進数にするとか。
必ず4桁の16進数が指定されるのなら、
=HEX2BIN(LEFT(B2,2),8)&HEX2BIN(RIGHT(B2,2),8)
とか。

QExcel 16進数

Excelで16進数を(2の補数などで)負の数の10進数に変換するやり方を
教えてください。

Aベストアンサー

>それでは、負の数にはならないんじゃないですか?
HEX2DECで扱う幅より小さい場合は、
便宜的に以下のようにすればいいかと思います。
=IF(HEX2DEC(A1)<16^LEN(A1)/2,HEX2DEC(A1),HEX2DEC(A1)-16^LEN(A1))

QExcelで16進数の計算

セルA1にFFFF、セルA2にもFFFFが格納されているとします。
A1とA2の和をA3に16進数表記で格納することは可能でしょうか?

一度10進数に直さなければならないのかと思い、分析ツールのアドインを有効にし、A1の数式を【=HEX2DEC(FFFF)】と入力してみたのですがセルには#NAME?と表示されてしまいます。

エクセルの経験があまりないので、自分なりに調べてやってみましたがこの有様です。解決策をご存知の方がおられましたら、ご伝授をよろしくお願いします。

Aベストアンサー

あ、ごめんなさい。
式が間違っていました。

誤)=DEX2HEX(HEX2DEC(A1)+HEX2DEC(A2))

正)=DEC2HEX(HEX2DEC(A1)+HEX2DEC(A2))

でした。

# A1やA2はセルを指定する式なのでダブルクォートで
# くくる必要はないですよ。

Qエクセルで16進数を2進数に変換した際に頭の0を表示させる方法は?

エクセルの関数についての質問です。
1つのセルに16進数で2e14という値があった場合に、これを一旦2進数に変換すると、計算機上では10 1110 0001 0100となります。
普通にこれがエクセル関数でできればいいのですが、桁数が問題なのか変換できませんでした。
そこで、2つのセルに2eと14に分けてから2進数表記して連接しようとしたのですが、そこで問題が起きました。
14の頭に0が3つついていますが、これが表示されませんでした。これを表示させないと当然連接した結果の値が全く違うものになってしまいます。
エクセル関数のHEX2BINを使った際に、変換後に頭の0が表示されるようなことは出来ないでしょうか。
エクセルなどに関してまだ素人当然なので教えて下さい。
よろしくお願いします。

Aベストアンサー

HEX2BIN("14",8)
でOKです。HELPに書いてありますが、2つ目の引数で桁を指定します。

Q16進数を10進数に変換する方法...

お初にお目にかかります(^^)
簡潔に質問しますm(_ _)m

バージョン:MS-Visual Basic6.0
質問内容:
16進数を10進数に変換する方法がわかりません。
Hex(Text1.Text) や Oct(Text1.Text) のような方法で
16進数・8進数に変換できるんですが…
10進数に変換する方法がわかりません。

P.S できれば、16進数→10進数、16進数や10進数→2進数
…に、変換する方法も、よろしければ教えてくださいませ
m(_ _)m

Aベストアンサー

16進数→10進数は

Dim StrHex As String
Dim intVal As Integer
StrHex = "1A"
intVal = Val("&H" & StrHex)

で出来ます。


申し訳ありませんが2進数への変換はよく分かりません。

Qエクセル2010 書式が多すぎて追加できない。

計算の量が増えてきたためブックを分けて
マイクロソフトのサポートを読みながらフォントなども統一して
極力書式を増やさないようにしているのですが、
1Sheetしか作っていないのに
書式が多すぎるて追加できません。と出てしまい
他のブックからの文字、数値のコピーが出来ません。
他のブックとフォントなどはそろえています。

参考になるサイトも見つからず困っています。
どうぞよろしくお願い致します。

Aベストアンサー

2007(2010でも同じ?)の場合、制限数は、64000のようですのでこれを超えるケースは、少ないと思いますが???
スタイルが壊れたものがあるのかもしれませんね?
http://www.excel-img.com/system01.html


>参考になるサイトも見つからず困っています。
以下のサイトは、見られたのでしょうか?
http://www.no-dash.com/2009/09/01-2034.html
このサイトでやったやり方の一つの例が
http://blog.tan-w.net/archives/1763

もう一つ下記のソフトがあります。
2007では、使えるようですが、2010では???
http://www.vector.co.jp/soft/win95/business/se411987.html

以上はいずれもバックアップを取った状態で実行のこと。

>他のブックからの文字、数値のコピーが出来ません。
このコピー→貼り付けの場合、「形式を選択して貼り付け」→「値」で張り付かないのしょうか?

このトラブルは多いようなので是非、解決された場合は、どんな方法で解決されたのかを記述されるように・・・
他の方の参考になります。

2007(2010でも同じ?)の場合、制限数は、64000のようですのでこれを超えるケースは、少ないと思いますが???
スタイルが壊れたものがあるのかもしれませんね?
http://www.excel-img.com/system01.html


>参考になるサイトも見つからず困っています。
以下のサイトは、見られたのでしょうか?
http://www.no-dash.com/2009/09/01-2034.html
このサイトでやったやり方の一つの例が
http://blog.tan-w.net/archives/1763

もう一つ下記のソフトがあります。
2007では、使えるようですが、2010では???
http:/...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング