Сначало немного теории:
Существует такая штука, как Системы Счисления (далее СС). СС — это совокупность приемов и правил, по которым числа записываются и читаются.
СС делятся на:
1) Не позиционные (римские)
2) Позиционные.
В позиционных системах счисления вес каждой цифры измеряется в зависимости от ее положения (позиции) в последовательности цифр, изображающих число.
12 = 1*10^1+2*10^0
Таким образом число 10 (например) в двоичной СС будет выглядеть как 1010, а, например 5, как 101. Но что каждый раз считать по этой формуле? Самоубийство для этого есть программы!
Создадим новый проект
Добавим на форму 2 текстовых поля и 2 командных кнопки.
Поля назовем (свойство name):
txtDecimal
txtBinary
Кнопки назовем (свойство name)
cmdDectoBin
cmdBintoDec
Вставим следующий код для перевод чисел из двоичной системы
Option Explicit Private Function DecToBin(ByVal x As Long) As String Dim Y As Long Dim Num As String While (x \ 2) > 0 Y = x \ 2 If x > 1 Then Num = Val(x - (Y * 2)) & Num End If x = Y Wend Num = x & Num DecToBin = Num End Function Private Function Pow(Number As Long, Power As Integer) As Long Dim x As Integer If Power > 1 Then For x = 2 To Power Number = Number * 2 Next Pow = Number Else If Power = 0 Then Pow = 1 If Power = 1 Then Pow = Number End If End Function Private Function BinToDec(ByVal Num As Long) As Long Dim sngNumber As Long Dim x As Integer Dim Tmp As Long Dim Output As Long sngNumber = Num For x = 0 To Len(CStr(sngNumber)) - 1 Tmp = CLng(Right(CStr(sngNumber), 1)) If Tmp = 1 Then Tmp = Tmp * Pow(2, x) End If Output = Output + Tmp Tmp = 1 If Len(CStr(sngNumber)) > 1 Then sngNumber = CLng(Left$(CStr(sngNumber), Len(CStr(sngNumber)) - 1)) Else sngNumber = 0 End If Next BinToDec = Output End Function Private Sub cmdBintoDec_Click() If txtBinary.Text <> "" Then txtDecimal.Text = BinToDec(txtBinary.Text) txtBinary.Text = "" Else: MsgBox ("Введите число!") End If End Sub Private Sub cmdDectoBin_Click() If txtDecimal.Text <> "" Then txtBinary.Text = DecToBin(txtDecimal.Text) txtDecimal.Text = "" Else: MsgBox ("Введите число!") End If End Sub
Пробуем!
Comments ( 0 )