• 締切済み

VBAで2進数を返すプログラムのつくりかた、教えてください!

10進数を引数としたとき、戻り値で2進数を返すプログラム(関数)を作りたいと考えています。イメージとしては、商を2で次々に割っていき、あまりを逆から並べるのかなーと思ったのですが、実際にプログラムを書くとなると、手が止まってしまいます(泣)。どなたか、すぐにでも教えてくださーい!

みんなの回答

回答No.4

>#2補足 ビット演算 http://ja.wikipedia.org/wiki/%E3%83%93%E3%83%83%E3%83%88%E6%BC%94%E7%AE%97#AND 例えば 18 And 2^4 を考える。 18を2進数にすると 10010 2^4=16を2進数にすると 10000 この二つのANDだから 2進数で 10010 10000 ----- 10000 つまり10進数で16 18 AND 16 = 16 となる。 さて,これを利用してプログラムを読んでみたらどうなるでしょう?

  • Ishiwara
  • ベストアンサー率24% (462/1914)
回答No.3

整数に限れば、 A=0 do A=A*10+(N mod 2) N=N\2 Loop while N みたいのでいいのでは? コンピューターの内部では、10進も2進もありません。上記のAは単に出力用の数です。たぶん、お望みの形はこれだと思います。

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

>で2進数を返すプログラム 質問者は2進数とたやすく言うが、自明ではないと思う。 文字列で表すなら、例えば16は、10000のように返すことを質問者は言っているようだが、2進表記にしているだけでないでしょうか。 http://homepage1.nifty.com/rucio/main/Samples/Sample055Convert10and2.htm ーー ビット列で考えると、16は(オン)(オフ)(オフ)オフ)オフ)のビットをメモリや外部メモリなどに作らないとならない場合もあると思う。 http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/vb_p03.htm のビット演算子を参照。 「表記と実体」といったらよいのか、複雑な世界のように思う。 かく言う小生も、考えがまとまらないが、 エクセルのメモリ内部的な数の表し方 文字コード体系 レジスタなどの2進数の世界 などが頭に浮かんだので、何かの参考に。 興味があれば勉強してください。そんなこと考えるまでもない問題なのかな。 多分、今の質問者にとっては、後半は必要ないのでしょうが。 --- エクセル関数だと=DEC2BIN(A1)があります。 A1=16ト入れて B1は10000となります。

mountain3
質問者

補足

教えてくださったリンク先のプログラムを参考にさせていただきました。ありがとうございます。ところで、4行目のif文が何を意味しているか分かりません。言葉で説明していただけないでしょうか? Function HENKAN2(v As Integer) As String   Dim i As Integer   Dim j As String    Do Until (v < 2 ^ i) If (v And 2 ^ i) <> 0 Then j = "1" & j Else j = "0" & j End If i = i + 1 Loop HENKAN2 = j End Function

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

日本語をコードにするだけですよ 2進化するのですから剰余をコレクションしていけばいいのです if n mod 2 then else end if で nに対する2の剰余を判定できます これを 前回の結果の前へ挿入するのですから s = "1" + s または s = "0" + s 後は 次回のために nを2で除算するだけですね 除算には /演算子または \演算子などを使います

関連するQ&A