• 締切済み

2進数→10進数への変換 また その逆

2進数→10進数への変換 また その逆 を作成したのですが、どのようにすれば良いのでしょうか? 宜しくお願いいたします

みんなの回答

回答No.5

私も考えてみました。(マイナスについては考慮していません。) あまりテストしてないので間違えてたらすみません。 '10進→2進 Function FromDecimalToBinary(X As Long) As String   Dim Y As String   If (X < 0) Then     Y = "Error"   Else     Do       Y = X Mod 2 & Y       X = X \ 2     Loop While (X > 0)   End If   FromDecimalToBinary = Y End Function '2進→10進 Function FromBinaryToDecimal(X As String) As Long   Dim i As Integer   Dim Y As Long   '2進チェック   If (Replace(Replace(X, "0", ""), "1", "") <> "") Then     Y = -1   Else     For i = 0 To Len(X) - 1       Y = Y + Mid(X, Len(X) - i, 1) * 2 ^ i     Next i   End If   FromBinaryToDecimal = Y End Function Private Sub Command1_Click()   '10進→2進 Label1 = FromDecimalToBinary(Text1) End Sub Private Sub Command2_Click()   '2進→10進 Label1 = FromBinaryToDecimal(Text1) End Sub

すると、全ての回答が全文表示されます。
  • atokih
  • ベストアンサー率40% (12/30)
回答No.4

10進から2進ならなんとか intTestが10進で、intBit(1 to 16)が2進です If intTest And &H1 Then intBit(1) = 1 Else intBit(1) = 0 End If If intTest And &H2 Then intBit(2) = 1 Else intBit(2) = 0 End If :   以下同様に&H4から&H8000まで

すると、全ての回答が全文表示されます。
回答No.3

No.2を回答した者ですが、 タイトルだけを拝見してカテゴリを算数の分野と思い込んで夢中で回答してしまいました。 したがってNo.2はVBカテでの回答ではございません。 大変失礼いたしました。

すると、全ての回答が全文表示されます。
回答No.2

a進数のn桁目の数字がp(0≦p≦a-1)であるということは、 aの(n-1)乗がpあるという意味です。 ものすごくわかりにくい説明なので、例を使って具体的に説明します。 2進数の数「10011」を10進数であらわすとき、 2進数の「10011」というのは 2の4乗×1 (=16×1  =16 2の3乗×0 (=8×0   =0 2の2乗×0 (=4×0   =0 2の1乗×1 (=2×1   =2 2の0乗×1 (=1×1   =1 という意味ですから、 これを10進数であらわすと (16+2+1=)19になります。 また、10進数の「58」を2進数であらわしてみると 58=32+16+8+2   =(2の5乗×1)+(2の4乗×1)+(2の3乗×1)+(2の1乗×1) ですから、2進数であらわすと111010です。 ここまでくれば当たり前ですが、10進数の数字もおなじ意味です。 26053=20000+6000+50+3      =10000×2 + 1000×6 + 10×5 + 1×3      =(10の4乗×2)+(10の3乗×6)+(10の1乗×5)+(10の0乗×3) 自分でも説明が下手だと思いますが、わかっていただけたでしょうか。

すると、全ての回答が全文表示されます。
  • laputart
  • ベストアンサー率34% (288/843)
回答No.1

'A を2進数 Bを10進数とすると ' テキストボックス名を Text1とする ’ラベルをLabel1とする 'Text1に2進数を代入した時のサブルーチンに ----------------------- Dim A As String Dim B As Integer A = Text1.Text B=0 'K = 2の乗数とする K = 0 'LAはテキストA の長さ LA = Len(A) 'Aの文字列を右側から0か1かを調べる For I = LA To 1 Step -1  '1の場合  If Mid(A, I, 1) = "1" Then   'Bの値を増やす   B = B + 2 ^ K  End If  K = K + 1 Next I 'Label1に10真数を代入 Label1.Caption = B --------------------------- 考え方でいうとこんなところですか。 プログラムとしてはこのままでは善くないです。 TEXT1の値に01だけの集合であるかの判断が 必要です。 この場合 例えば  Aに 11 を代入すると B = 2~0 + 0~1 = 3 となります 8進数や16進数は関数があります。 ------------------------- 10進数から2進数への変換も必要なら 書きますが...いかがですか?

nao0
質問者

お礼

早速のご回答有難うございます  誠に恐縮ではございますが、宜しくお願いいたします

すると、全ての回答が全文表示されます。

関連するQ&A