-PR-
締切済み

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

  • すぐに回答を!
  • 質問No.858429
  • 閲覧数285
  • ありがとう数3
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 10% (50/483)

2進数→10進数への変換 また その逆
を作成したのですが、どのようにすれば良いのでしょうか?
宜しくお願いいたします
通報する
  • 回答数5
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全5件)

  • 回答No.5
レベル11

ベストアンサー率 55% (132/236)

私も考えてみました。(マイナスについては考慮していません。)
あまりテストしてないので間違えてたらすみません。

'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


  • 回答No.4
レベル9

ベストアンサー率 40% (12/30)

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.1
レベル12

ベストアンサー率 34% (288/843)

'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

お礼率 10% (50/483)

早速のご回答有難うございます
 誠に恐縮ではございますが、宜しくお願いいたします
投稿日時 - 2004-05-14 18:39:52
  • 回答No.2
レベル9

ベストアンサー率 19% (24/126)

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)

自分でも説明が下手だと思いますが、わかっていただけたでしょうか。
  • 回答No.3
レベル9

ベストアンサー率 19% (24/126)

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

したがってNo.2はVBカテでの回答ではございません。
大変失礼いたしました。
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-

特集


開業・独立という夢を持つ人へ向けた情報満載!

ピックアップ

ページ先頭へ