アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (4件)

>#2補足



ビット演算
http://ja.wikipedia.org/wiki/%E3%83%93%E3%83%83% …

例えば
18 And 2^4
を考える。

18を2進数にすると
10010

2^4=16を2進数にすると
10000



この二つのANDだから
2進数で
10010
10000
-----
10000

つまり10進数で16
18 AND 16 = 16
となる。

さて,これを利用してプログラムを読んでみたらどうなるでしょう?
    • good
    • 0

整数に限れば、


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

>で2進数を返すプログラム


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

この回答への補足

教えてくださったリンク先のプログラムを参考にさせていただきました。ありがとうございます。ところで、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

補足日時:2007/10/17 20:36
    • good
    • 0

日本語をコードにするだけですよ


2進化するのですから剰余をコレクションしていけばいいのです

if n mod 2 then
else
end if
で nに対する2の剰余を判定できます
これを 前回の結果の前へ挿入するのですから
s = "1" + s または s = "0" + s
後は 次回のために nを2で除算するだけですね
除算には /演算子または \演算子などを使います
    • good
    • 0

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