Страница: 1 |
Страница: 1 |
Вопрос: Запись чисел в двоичном виде
Добавлено: 27.05.05 11:44
Автор вопроса: GlooM | Web-сайт:
Может быть кому-нибудь пригодиться этот код...
Расположите на форме 1 TextBox, 2 Label и CommandButton...
Dim ln As Double
Dim ts As String
Dim num As Double
Dim r As Double
num = Text1.Text
ln = 100
If num < 0 Or num > 255 Then Exit Sub
ts = ""
Do While ln > 1
ln = num / 2
r = Round(ln) - ln
If r <> 0 Then
ts = ts + "1"
Else
ts = ts + "0"
End If
If r < 0 Then
r = -r
End If
num = ln - r
Loop
Label2.Caption = "Числу " & Text1.Text & " соответствует двоичное " & StrReverse(ts)
End Sub
Private Sub Form_Load()
Label1.Caption = "Введите десятичное число" & Chr(13) & "от 0 до 255"
End Sub
вот...
Ответы
Всего ответов: 9
Номер ответа: 1
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #1
Добавлено: 27.05.05 11:51
Отстойный код какой-то... Ну нафига здесь нужна вещественная арифметика?
Номер ответа: 2
Автор ответа:
Sur
ICQ: 1249088
Вопросов: 10
Ответов: 304
Web-сайт:
Профиль | | #2
Добавлено: 27.05.05 12:31
а такой? :
Label1 = hex2bin(Hex$(Text1))
End Sub
Function hex2bin(strInput As String) As String
Dim i As Long
hex2bin = ""
For i = 1 To Len(strInput)
Select Case Mid$(strInput, i, 1)
Case "0": hex2bin = hex2bin & "0000": Case "1": hex2bin = hex2bin & "0001"
Case "2": hex2bin = hex2bin & "0010": Case "3": hex2bin = hex2bin & "0011"
Case "4": hex2bin = hex2bin & "0100": Case "5": hex2bin = hex2bin & "0101"
Case "6": hex2bin = hex2bin & "0110": Case "7": hex2bin = hex2bin & "0111"
Case "8": hex2bin = hex2bin & "1000": Case "9": hex2bin = hex2bin & "1001"
Case "A": hex2bin = hex2bin & "1010": Case "B": hex2bin = hex2bin & "1011"
Case "C": hex2bin = hex2bin & "1100": Case "": hex2bin = hex2bin & "1101"
Case "E": hex2bin = hex2bin & "1110": Case "F": hex2bin = hex2bin & "1111"
End Select
Next i
End Function
Номер ответа: 3
Автор ответа:
someone
Вопросов: 215
Ответов: 1596
Web-сайт:
Профиль | | #3
Добавлено: 27.05.05 13:58
хЩААъ...
те [OFF] )
Eug, ты когда вообще в се бываешь???
[/OFF]
Номер ответа: 4
Автор ответа:
BV
ICQ: 302392161
Вопросов: 2
Ответов: 28
Профиль | | #4
Добавлено: 27.05.05 14:54
Ё маё! Опять тут все админы собрались!
Нет, чтобы на VBLand, так по VBStreets, по VBNet'у ходять!
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 27.05.05 17:12
2 BV
А ты думал в сказку попал? Форумы то на многих сайтах есть, написать форум тоже особо ума не надо (хотя кому как) А вот раскрутить форум так, как раскручен этот - это года... Поэтому и тусуются тут все админы...
Номер ответа: 6
Автор ответа:
BV
ICQ: 302392161
Вопросов: 2
Ответов: 28
Профиль | | #6
Добавлено: 27.05.05 17:30
2 HACKER
А ты думал, что я везде, как и здесь новичёк?
Я прекрасно знаком с очень многими форумами и неплохо знаю как сделать его, хоть на том же phpBB! Не стоит тут умничать-то!
И вообще - это просто шутка была!...
Номер ответа: 7
Автор ответа:
Александр
Разработчик Offline Client
ICQ: 204034
Вопросов: 106
Ответов: 1919
Профиль | | #7
Добавлено: 28.05.05 11:10
Из десятичного в двоичного:
Public Function dec2bin(ByVal lngNum As Double) As String
On Error Resume Next
While lngNum
dec2bin = lngNum Mod 2 & dec2bin
lngNum = lngNum \ 2
Wend
dec2bin = bin2digit(dec2bin)
End Function
Из шестнадчатеричного в двоичное:
MsgBox dec2bin("&H" & m_Number)
Также можно переводить в шестнадцетиричной вид типы переменных с
других языков. Я имею ввиду, что у vb префикс шестнадцатиричного числа
&H - а у сишника и дельфина другие. Их можно просто переводить
перед счетом и выводить по формуле выше ответ.
Кстати, у восьмеричного в ваське префикс &O.
empro, ты лучше ему на мобилу пиши или звони - он там ежедневно )
Кстати, скажи свой номер - все забываю у тебя спросить. Лучше сказать
на личку.
Номер ответа: 8
Автор ответа:
Aндрей
ICQ: 259020622
Вопросов: 30
Ответов: 71
Профиль | | #8
Добавлено: 28.05.05 11:35
Eug у тебя и правда код кривоватый...
Sur, ты сделал примерно как я и говорил вот сдесь
http://vbnet.ru/forum/show.aspx?id=74330
Private Sub Command1_Click()
Dim s As String
Dim m As Double
m = Val(Text1)
While m <> 1
s = CStr(m Mod 2) + s
m = m \ 2
Wend
s = "1" + s
Label1 = "Áèíàðíîå ïðåäñòàâëåíèå ÷èñëà " & s
End Sub
Private Sub Form_Load()
Debug.Print "Made by Polyakov"
End Sub
Вот такому алгоритму нас еще на ВВС учили...
Номер ответа: 9
Автор ответа:
GlooM
ICQ: 348453688
Вопросов: 88
Ответов: 356
Web-сайт:
Профиль | | #9
Добавлено: 28.05.05 17:57
не судите строго. т.к. писать пришлось его ОЧЕНь быстро...