Excel Forum - Porady, Pomoc,  Excel Help, Excel FAQ Strona Główna
 FAQ  RegulaminRegulamin  Szukaj   Użytkownicy   Grupy   Rejestracja   Profil   Twoje wiadomości   Zaloguj 


Poprzedni temat «» Następny temat
ID tematu: 73437 Skopiuj do schowka Kalkulator binarny
Autor Wiadomość
maciek301 
Świeżak


Wersja: Win Office 365
Posty: 1
  Wysłany: 02-10-2022, 23:10   Kalkulator binarny

Dzień dobry, Eksperci,

potrzebuję przeliczyć liczby z systemu dziesiętnego na system dwójkowy (rozwinięcie binarne) w Excelu. Pomoc Microsoft podaje formułę "DZIES.NA.DWÓJK". Problem w tym, że dla liczb dziesiętnych po przecinku nie chce ona właściwie działać. Potrzebuję przeliczyć np. liczby "10,537109", "4,890625". Proszę o pomoc, jak zrobić to w Excelu.

Z góry dziękuję.
ID posta: 420948 Skopiuj do schowka
 
 
xfish 
Excel Expert



Wersja: Win Office 2013
Pomógł: 702 razy
Posty: 2087
Wysłany: 03-10-2022, 06:48   

Ta funkcja zamienia tylko część całkowitą.
Bez VBA raczej się nie da.
Tutaj masz funkcję.
Wartości dla funkcji:
liczba którą chcesz zamienić
na jaki system (w twoim wypadku wpisujesz 2)
opcjonalnie ile miejsc po przecinku (przy pominięciu domyślnie 20)
Kod:
Function DecToBaseX(DecIn As Double, Base As Long, Optional FractionLen As Long = 20) As String
Dim whole As Long, frac As Double

    whole = Int(DecIn)
    DecToBaseX = IIf(whole = 0, "0.", ".")
   
    While whole > 0
        DecToBaseX = whole Mod Base & DecToBaseX
        whole = whole \ Base
    Wend
   
    frac = DecIn - Int(DecIn)
    While frac > 0 And FractionLen > 0
        frac = frac * Base
        DecToBaseX = DecToBaseX & Int(frac)
        frac = frac - Int(frac)
        FractionLen = FractionLen - 1
    Wend
   
    If Right(DecToBaseX, 1) = "." Then DecToBaseX = Replace(DecToBaseX, ".", "")
   
End Function
_________________
Pozdrawiam xFish
ID posta: 420949 Skopiuj do schowka
 
 
Maciej Gonet 
Excel Expert


Wersja: Win Office 365
Pomógł: 2828 razy
Posty: 8516
Wysłany: 03-10-2022, 09:04   

Podam i swoją propozycję. Dotyczy tylko zamiany liczb dziesiętnych na dwójkowe. Też funkcja UDF. Przecinek jako separator dziesiętny. Listing funkcji:
Kod:
Function Frac2bin(num As Double, Optional maxdig As Long = 12) As String
   Dim frac As Double, res As String, i As Long
   If num < 0 Then Frac2bin = CVErr(xlErrValue): Exit Function
   Frac2bin = WorksheetFunction.Dec2Bin(Fix(num))
   frac = num - Fix(num)
   If frac > 0 And maxdig > 0 Then
      res = ","
      For i = 1 To maxdig
         frac = 2 * frac
         If frac >= 1 Then
            res = res & 1
            frac = frac - 1
         ElseIf frac = 0 Then
            Exit For
         Else
            res = res & 0
         End If
      Next i
      Frac2bin = Frac2bin & res
   End If
End Function


Konwersja_ułamka_na_bin.xlsm
Pobierz Plik ściągnięto 14 raz(y) 15.98 KB

ID posta: 420953 Skopiuj do schowka
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group
Theme xandgreen created by spleen& Programosy modified v0.3 by warna
Opieka techniczna www.wip.pl

Archiwum

Strona używa plików cookies.

Kliknij tutaj, żeby dowiedzieć się jaki jest cel używania cookies oraz jak zmienić ustawienia cookie w przeglądarce.
Korzystając ze strony użytkownik wyraża zgodę na używanie plików cookies, zgodnie z bieżącymi ustawieniami przeglądarki.
Sprawdź, w jaki sposób przetwarzamy dane osobowe