-
Data: 2013-04-15 23:23:53
Temat: Re: zamiana liczby
Od: "Ireneusz Szpilewski" <i...@s...opole.pl> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu 10.04.2013 o 11:43 firr kenobi <p...@g...com> pisze:
> co do kodu to nie rozumiem tego kodu, jak to
> działa? - jedzie jakos po 32 bitach i co
> jakis czas mnozy przez dwa i costam porownuje?
Mniej wiecej wlasnie tak :-). Jak chcesz zamienic liczbe dwojkowa na
dziesietna to mozna wlasnie tak dzialac: zerujesz wynik, a potem
analizujesz bity liczby dwojkowej od najstarszego do najmlodszego i jesli
bit jest rowny 0, to mnozysz wynik razy 2, a jesli bit jest rowny 1, to
mnozysz wynik razy 2 i dodajesz 1. Np. dla liczby dwojkowej 1011 mamy:
wynik = 0
lewy bit == 1, więc wynik = 2 * wynik + 1 == 1
nastepny bit == 0, wiec wynik = 2 * wynik == 2
nastepny bit == 1, wiec wynik = 2 * wynik + 1 == 5
ostatni bit == 1, wiec wynik = 2 * wynik + 1 == 11
czyli dwojkowe 1011 == 11 dziesietnie
W tym moim algorytmie jeszcze chodzi o wyluskane odpowieniej grupy bitow z
zadanej liczby 32 bitowej, odpowiedzialnych za bajty, kilobajty, megabajty
lub gigabajty.
Liczba 32 bitowa, będąca rozmiarem pliku, ma ponizsza strukture bitów:
ggmmmmmmmmmmkkkkkkkkkkbbbbbbbbbb
gdzie b: grupa 10 bitow odpowiedzialnych za rozmiar w bajtach
k: grupa 10 bitow odpowiedzialnych za rozmiar w KB
m: grupa 10 bitow odpowiedzialnych za rozmiar w MB
g: grupa 2 bitow odpowiedzialnych za rozmiar w GB
Chodzi o zamiane na liczbe dziesietna pierwszej od lewej grupy bitow,
ktora zawiera chociaz jeden bit niezerowy (wykrycie takiego bitu oznaczamy
przez nadane zmiennej hit wartosci 1). Wynik bedzie "informatyczny" czyli
KB = 1024 B, MB = 1024*1204 B. Teraz napisze, co oznaczaja zmienne:
Zmienna power1024 ma wartosc:
3 dla bitu z grupy g,
2 dla bitu z grupy m,
1 dla bitu z grupy k,
0 dla bitu z grupy b,
ggmmmmmmmmmmkkkkkkkkkkbbbbbbbbbb
33222222222211111111110000000000 <- power1024
Zmienna bit10 oznacza numer bitu w ramach grupy bitow, liczony w lewo.
Poczatkowa wartosc to 1, bo zaczynamy analize bitow od lewej strony, a
grupa bitow typu g ma tylko 2 bity:
ggmmmmmmmmmmkkkkkkkkkkbbbbbbbbbb
10987654321098765432109876543210 <- bit10
Zmienna byte oznacza nr bajtu zadanej liczby 32-bitowej, czyli tak:
ggmmmmmmmmmmkkkkkkkkkkbbbbbbbbbb
33333333222222221111111100000000 <- byte
Jak juz wiesz, co znacza te zmienne, to powinno byc latwiej przesledzic,
jak dziala algorytm.
Irek
Następne wpisy z tego wątku
- 20.04.13 09:55 Kamil
- 20.04.13 09:53 Kamil
- 20.04.13 10:04 Ministerstwo Propagandy
Najnowsze wątki z tej grupy
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
Najnowsze wątki
- 2024-07-01 W-wa naklejki wjazd do centrum
- 2024-07-01 ładowarka zmarła
- 2024-07-01 Koder szuka pracy. Koduję w j.: Asembler, C, C++ (z Qt) i D.
- 2024-07-01 Kraków => Kierownik Działu Spedycji Międzynarodowej <=
- 2024-07-01 Białystok => Full Stack Web Developer (.Net Core, Angular6+) <=
- 2024-07-01 Berlin => Technical Rollouter (Radio Systems Software Installation and
- 2024-07-01 Warszawa => Key Account Manager <=
- 2024-07-01 Gdańsk => Programista Full Stack .Net <=
- 2024-07-01 Zabrze => Junior HelpDesk <=
- 2024-07-01 Warszawa => Key Account Manager <=
- 2024-07-01 Bielsko-Biała => Expert Migration Architect (Azure) <=
- 2024-07-01 Mini Netykieta polskich grup dyskusyjnych
- 2024-07-01 Re: Jak wypełnić polecenie francuskiego sądu blokowania niektórych zapytań DNS? Blokując Francję
- 2024-07-01 Re: Powtórne wezwanie na PO-komisję uzdrowi Ziobrę już w 10 dni
- 2024-07-01 CA -- problem z logowaniem