Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2012, 13:48   #1
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию Двоичная арифметика

Замечали знакомые....
Есть у кого нибудь функции реализующие операции двоичной арифметики?
С уважением, Алексей.

Последний раз редактировалось tae1980; 16.01.2012 в 14:04.
tae1980 вне форума Ответить с цитированием
Старый 16.01.2012, 13:56   #2
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

См. здесь .
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 16.01.2012, 13:56   #3
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Дык ведь есть они:

=DEC2BIN(SUM(BIN2DEC(B1);BIN2DEC(B2 )))

Ну или иначе:

=DEC2BIN(SUM(BIN2DEC(101);BIN2DEC(1 1)))
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 16.01.2012, 14:33   #4
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Дык ведь есть они:
=DEC2BIN(SUM(BIN2DEC(B1);BIN2DEC(B2 )))
Ну или иначе:
=DEC2BIN(SUM(BIN2DEC(101);BIN2DEC(1 1)))
А это где? В 2003 я такого не нашел.
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 16.01.2012, 14:39   #5
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Подключить Analisys Toolpak в надстройках. Или что-то похожее в русской версии ("Пакет анализа" вроде...)
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 16.01.2012, 14:44   #6
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от Serge 007 Посмотреть сообщение
См. здесь .
Это решения задания по переводу между системами исчисления, С этим разобрался так
Код:
Function Dec_To_N_Schisl(Система As Integer, Число As Variant)
' Переводит десятичное число "Число" в систему счисления "Система".
Размерность = 3
Число = CDbl(Число)
If InStr(1, Число, ",") > 0 Then
    Числоd = Число - Fix(Число)
    Число = Fix(Число)
End If
ik = 0
it = Число
Число = ""
If Система <= 1 Then Exit Function
Do
    ostatok = it Mod Система
    it = it \ Система
    Select Case ostatok
        Case 0 To 9
          Zn = Trim(CStr(ostatok))
        Case 10 To 37
          Zn = Chr(55 + ostatok)
        Case Else
          Zn = "#"
    End Select
    Число = Zn & Число
Loop While it > 0
If Числоd > 0 Then
    ik = 0
    it = Числоd
    Числоd = ""
    Do
    a = it * Система
        целое = Fix(it * Система)
        it = (it * Система) - целое
        Select Case целое
            Case 0 To 9
                Zn = Trim(CStr(целое))
            Case 10 To 37
                Zn = Chr(55 + целое)
            Case Else
                Zn = "#"
        End Select
        Числоd = Числоd & Zn
    Loop While it > 0
End If
Dec_To_N_Schisl = Число & IIf(Числоd > 0, "." & Left(Числоd, Размерность), "")
End Function
 
Function N_Schisl_To_Dec(Система As Integer, Число As Variant)
' Переводит число "Число" из системы счисления "Система" в десятичное .
Число = Replace(UCase(Trim(CStr(Число))), ",", ".")
If InStr(1, Число, ".") > 0 Then
    Числоd = Mid(Число, InStr(1, Число, ".") + 1, Len(Число) - InStr(1, Число, ".") + 1)
    Число = Mid(Число, 1, InStr(1, Число, ".") - 1)
End If
k = Len(Число)
Chislo10 = 0
Chislo10d = 0
For i = 1 To k
    Zn = Mid(Число, k + 1 - i, 1)
    Select Case Zn
        Case "0" To "9"
          ik = Val(Zn)
        Case "A" To "Z"
          ik = Asc(Zn) - 55
    End Select
    Chislo10 = Chislo10 + Система ^ (i - 1) * ik
Next
k = Len(Числоd)
For i = 1 To k
    Zn = Mid(Числоd, i, 1)
    Select Case Zn
        Case "0" To "9"
          ik = Val(Zn)
        Case "A" To "Z"
          ik = Asc(Zn) - 55
    End Select
    Chislo10d = Chislo10d + Система ^ (i * (-1)) * ik
Next i
N_Schisl_To_Dec = Chislo10 + IIf(Chislo10d > 0, Chislo10d, 0)
End Function
Теперь нужно провести арифметические действия над двоичными числами. "Заданы двоичные числа X и Y. Вычислить X-Y и X+Y , X*Y и X/Y". Где X=101101,101; Y=10111,1
Простой перевод в десятинную->вычисление->обратный перевод.
И не должно конечно работать... но было интересно "а вдруг" :))
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 16.01.2012, 14:48   #7
Serge 007
Участник клуба
 
Аватар для Serge 007
 
Регистрация: 15.12.2009
Сообщений: 1,448
По умолчанию

Цитата:
Сообщение от tae1980 Посмотреть сообщение
А это где?
Категория - инженерные. Есть такая в 2003?
Бесплатная помощь: www.excelworld.ru
Платная помощь: serge_007.planetaexcel@mail.ru
https://yoomoney.ru: 41001419691823
Serge 007 вне форума Ответить с цитированием
Старый 16.01.2012, 15:03   #8
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от tae1980 Посмотреть сообщение
Простой перевод в десятинную->вычисление->обратный перевод.
И не должно конечно работать... но было интересно "а вдруг" )
Попробовал ещё раз. Все получилось.
В методички сплошные ошибки в примере в задание одни цифры, а в решении совсем другие. Поэтому у меня и были расхождения.
Всем спасибо!
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 16.01.2012, 15:06   #9
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от Serge 007 Посмотреть сообщение
Категория - инженерные. Есть такая в 2003?
Такой категории не было, так как не подключал надстройки. Подключил, появились.
Но как я понял (при беглом взгляде), перевод из систему в систему работает только для целых чисел, тогда как приведенные мною функции работают и с дробными цифрами.
С уважением, Алексей.

Последний раз редактировалось tae1980; 16.01.2012 в 15:13.
tae1980 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Двоичная арифметика 5926811 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 14.11.2011 04:12
Двоичная арифметика nikozavr C# (си шарп) 16 18.05.2011 14:05
двоичная арифметика Gen_r_questions PHP 9 13.04.2011 20:52
Двоичная арифметика Molotok Помощь студентам 0 26.12.2010 11:27
Двоичная арифметика mizantrop32 Общие вопросы C/C++ 1 03.11.2010 16:25