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
Przesunięty przez: Artik
02-01-2019, 01:55
Zmiany systemów liczb
Autor Wiadomość
Denis
świeżak


Posty: 4
Wysłany: 01-01-2019, 18:16   Zmiany systemów liczb

Hej, potrzebuje napisać 3 proste makra ale nie wiem jak się za to zabrać

1. Konwersja liczby DEC na U2 (układ uzupełnień do dwóch na 12-u bitach)
potrzebuje też żeby działał dla liczb ujemnych

2. Potrzebuje też zrobić kalkulator by dodawał dwie liczby w systemach bin,3,4,5,6,7,8 i zwracał wynik w tym samym systemie

3. Wypisywanie (wyliczanie) wartości zapisanej w systemie IEEE 754 (single precision format) jako ciąg 32 bitów lub 8 cyfr HEX
np.
EEE754: c1c00000
DEC: -24
ID posta: 359401 Skopiuj do schowka
 
 
umiejead 
Excel Expert


Wersja: Win Office 2013
Pomógł: 339 razy
Posty: 1805
Wysłany: 01-01-2019, 23:31   

Umieściłeś wątek w dziale "Mam problem z makrem" > pokaż to makro.
_________________
.
Jak poprawnie opisać problem: http://www.excelforum.pl/...ika-vt59262.htm
I dbajmy - proszę - o poprawną polszczyznę.
ID posta: 359418 Skopiuj do schowka
 
 
Marecki 
Excel Expert



Wersja: Win Office 2019
Pomógł: 2131 razy
Posty: 7054
Wysłany: 02-01-2019, 01:31   

Ad1.
Sprawdź dobrze tą funkcję, bo nie wiem czy nie walnąłem gdzieś byka.
Funkcja przelicza w systemie U2 dziesiętne na binarne o odpowiedniej ilości bitów, do zadeklarowania w funkcji.
Kod:
Sub test()
    Debug.Print DecToBin(-22, 12)
End Sub

Public Function DecToBin(DecNum As Long, NumberOfBits As Variant) As String
    Dim NegNum As Boolean
    Dim Tmp As String
    Dim i As Long
    Dim Tbl() As Byte
    Dim z As Byte

    If DecNum < 0 Then NegNum = True
    DecNum = VBA.Abs(DecNum)

    Tmp = DecNum Mod 2
    DecNum = DecNum \ 2

    Do While DecNum <> 0
        Tmp = Trim(VBA.Str(DecNum Mod 2)) & Tmp
        DecNum = DecNum \ 2
    Loop

    If VBA.Len(Tmp) > NumberOfBits Then
        DecToBin = "Byk - Liczba przekracza określony rozmiar bitowy."
        Exit Function
    Else
        DecToBin = VBA.Right$(VBA.String$(NumberOfBits, "0") & Tmp, NumberOfBits)
    End If

    If NegNum Then
        Tmp = DecToBin
        ReDim Tbl(NumberOfBits - 1, 1)
        For i = 0 To NumberOfBits - 1
            Tbl(i, 0) = VBA.Mid(Tmp, i + 1, 1)
            Tbl(i, 1) = VBA.IIf(VBA.Mid(Tmp, i + 1, 1) = 1, 0, 1)
        Next i

        z = 1
        For i = NumberOfBits - 1 To 0 Step -1
            If z = 1 Then
                Select Case Tbl(i, 1) + 1
                Case 2
                    Tbl(i, 1) = 0: z = 1
                Case 1
                    Tbl(i, 1) = 1: z = 0
                End Select
            End If
        Next i

        Tmp = vbNullString
        For i = 0 To NumberOfBits - 1
            Tmp = Tmp & Tbl(i, 1)
        Next i

        DecToBin = Tmp

    End If

End Function


Ad2.
Zrobisz to na podstawie ww funkcji.
Chodzi tylko o przeniesienie bita.
Przeanalizuj funkcję - podpowiem że przeniesienie owego bita zaczyna się od instrukcji
Kod:
 z = 1
        For i = NumberOfBits - 1 To 0 Step -1

_________________
Hardware - ta część komputera, którą można kopnąć kiedy software przestanie funkcjonować.

Szkolenia z Excela , FB
Office 2019 Professional Plus , Windows 10 x64
Pozdrawiam, były mkkk23 teraz Marecki.
ID posta: 359423 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.marketingNET.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