Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перевод из различных систем исчисления в 2-ную, Нужны самые элементарныеспособы,какздесь 
:(
    Опции темы
Voldemar2004
Дата 19.7.2005, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 7
Всего: 23



Код

Option Explicit

Private Sub Command1_Click()
Dim i As Long
Dim j As Long

i = Val(Text1.Text)

Text2.Text = ""
            
    Do While i > 0
        If i / 2 = i \ 2 Then
            Text2.Text = Text2.Text & "0"
            Else:
            Text2.Text = Text2.Text & "1"
        End If
        i = i \ 2
    Loop

    Text2.Text = StrReverse(Text2.Text)
    ' узнал из справочника
    ' до этого пользовался по старинке, как в Си :
    'a(0) = 12
    'a(1) = 13
    'a(2) = 0
    'a(3) = -43
    'For i = 3 To 0 Step -1
    ' вывод :)
    'Next i
    
    ' здесь проверяем: если битов не хватает до восьми (или их 8), то заполняем
    ' пустые регистры нулями, пока остаток от целочисленного деления не будет = 0 :
    
    If Len(Text2.Text) <= 8 Then
        For j = 0 To 7 - Len(Text2.Text)
        Text2.Text = "0" & Text2.Text
        Next j
        
    Else:
        Do
        Text2.Text = "0" & Text2.Text
        Loop While Len(Text2.Text) Mod 8 <> 0
    End If

End Sub


Написал программульку, которая переводит из 10-ной системы в двоичную. Вопрос, короче такой: какие есть способы перевода десятиричных чисел в 16-тиричные, восьмиричные - в основном-то я знаю, как это делается, просто нужны САМЫЕ ЭЛЕМЕНТАРНЫЕ способы типа того, который я на VB написал. Есть еще и метод табличной подстановки, но он, ИМХО, самый тупой из всех. И самый простой способ перевода дробных чисел в 2-ную систему, кто знает, расскажите.

P.S. Перелистывал древние книжки по бейсику (не Quick !) и нашел программку, делающую, то же, что и моя, но там было штук 100 Goto smile , поэтому ни фига не поняв, сделал по-нормальному. Я подумал: "а в бейсиках до QBasic, что вообще не было оператора Do ... loop While/Until/Wend? Просто валялся от смеха, когда читал исходники 20-летней давности smile "


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Voldemar2004
Дата 20.7.2005, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 7
Всего: 23



Вот посмотри, то что тебе надо: http://www.codenet.ru/progr/vbasic/Convert...Hex-Bin-Oct.php.


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
cardinal
Дата 20.7.2005, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Раздвоение личности? smile

smile


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
S.A.P.
Дата 20.7.2005, 21:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: нет
Всего: 71



Ничего себе smile
PM MAIL   Вверх
Akina
Дата 21.7.2005, 08:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



1)
Код

Dim i As Long
...
If i / 2 = i \ 2 Then

Хотя и будет работать, но недопустимо (нет гарантии что не будет приведения обратно к Long). Правильно:
Код

if i mod 2 = 0 Then


2) Какой великий смысл в переводе ЧИСЛА в десятичной системе в СТРОКУ в двоичной???


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Voldemar2004
Дата 21.7.2005, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 7
Всего: 23



Цитата(Akina @ 21.7.2005, 08:31)
Хотя и будет работать, но недопустимо (нет гарантии что не будет приведения обратно к Long). Правильно:
Меня это сейчас не волнует.

Цитата(Akina @ 21.7.2005, 08:31)
2) Какой великий смысл в переводе ЧИСЛА в десятичной системе в СТРОКУ в двоичной???
Да я просто наваял эти строки по-быстрому только и всего.



--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
SOY
Дата 3.8.2005, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 30.10.2004

Репутация: 1
Всего: 1



Код

'Функция преобразования Dec в Bin
Public Function DecBin(str As String)
Dim a
Dim b
Dim c
Dim d As String
a = str
Do
c = Int(a / 2) 'вычисление целого
b = 2 * c: b = a - b 'вычесление остатка
a = c
d = d & b
Loop While a >= 1
DecBin = StrReverse(d)
End Function

'функция преобразования Bin в Dec
Public Function BinDec(str As String)
Dim a: Dim b As String: Dim c: Dim count As Integer: Dim d: Dim j
d = 1
a = Len(str) 'число символов в строке
b = StrReverse(str) 'реверс строки
For count = 1 To a
c = Mid(b, count, 1) 'читаем символ с номером count
Select Case c
Case "1"
j = j + d
Case "0"
j = j
End Select
d = d * 2
Next
BinDec = j
End Function


Это сообщение отредактировал(а) Akina - 3.8.2005, 08:45
PM MAIL   Вверх
cardinal
Дата 3.8.2005, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Модератор: Используйте теги для подсветки кода.


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0574 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.