-
X-Received: by 10.49.30.168 with SMTP id t8mr69459qeh.8.1365587033702; Wed, 10 Apr
2013 02:43:53 -0700 (PDT)
X-Received: by 10.49.30.168 with SMTP id t8mr69459qeh.8.1365587033702; Wed, 10 Apr
2013 02:43:53 -0700 (PDT)
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!news.cyf-kr.edu.pl!news.nask
.pl!news.nask.org.pl!newsfeed.pionier.net.pl!news.glorb.com!t2no49051055qal.0!n
ews-out.google.com!ef9ni18755qab.0!nntp.google.com!ca1no39559893qab.0!postnews.
google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Wed, 10 Apr 2013 02:43:53 -0700 (PDT)
In-Reply-To: <op.wvaq0ku4wyk85p@localhost>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=31.62.240.216;
posting-account=Sb6m8goAAABbWsBL7gouk3bfLsuxwMgN
NNTP-Posting-Host: 31.62.240.216
References: <kjsgog$lu7$1@node2.news.atman.pl> <op.wvaq0ku4wyk85p@localhost>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <7...@g...com>
Subject: Re: zamiana liczby
From: firr kenobi <p...@g...com>
Injection-Date: Wed, 10 Apr 2013 09:43:53 +0000
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
Xref: news-archive.icm.edu.pl pl.comp.programming:202537
[ ukryj nagłówki ]W dniu środa, 10 kwietnia 2013 01:18:10 UTC+2 użytkownik Ireneusz Szpilewski napisał:
> On Sun, 07 Apr 2013 21:17:35 +0200, identyfikator: 20040501
>
> <N...@g...pl> wrote:
>
>
>
> > jest taka sprawa, jest sobie liczba dword (32 bity),
>
> > trzeba ją zamienić na skróconą wielkość pliku, np. 100kB, 1Mb, 10Mb,
>
> > 512kB itp...
>
> >
>
> > jak to szybko i skutecznie zrobić?
>
> >
>
> > tricki z dzieleniem przez 10 lub sumowaniem w BCD raczej odpadają, mam
>
> > mało pamięci i do tego rejestry 8 bitowe...
>
> >
>
> > tak w ramach rozrywki umysłowej...
>
> >
>
> > tylko BARDZO UPRZEJMIE PROSZĘ nie flejmować...
>
> >
>
>
>
> Takie cos ponizej wysmazylem w ramach rozrywki :-), niestety uzylem
>
> recznego mnozenia 4 znakowej liczby dziesietnej (cos na ksztalt BCD), ale
>
> za to bez dzielenia, no i na samych rejestrach 8 bit powinno zadzialac:
>
>
>
> #include <stdio.h>
>
>
>
> /* zeruj wynik */
>
> void dec_zero(unsigned char dec[4])
>
> {
>
> int i;
>
>
>
> for(i = 0; i < 4; i++)
>
> dec[i] = 0;
>
> }
>
>
>
> /* pomnoz wynik razy 2 i dodaj carry (0 lub 1) */
>
> void dec_double(unsigned char dec[4], int carry)
>
> {
>
> int i;
>
> int digit;
>
>
>
> for(i = 0; i < 4; i++)
>
> {
>
> digit = dec[i] * 2 + carry;
>
>
>
> if(digit > 9)
>
> {
>
> digit -= 10;
>
> carry = 1;
>
> }
>
> else
>
> {
>
> carry = 0;
>
> }
>
>
>
> dec[i] = digit;
>
> }
>
> }
>
>
>
> /* wylicz wynik result[4] dla podanej liczby number[4] */
>
> /* i zwroc indeks potegi 1024 (0 = B, 1 = KB, 2 = MB, 3 = GB) */
>
> int convert(const unsigned char number[4], unsigned char result[4])
>
> {
>
> int byte = 3;
>
> int bit = 31;
>
> int bit10 = 1;
>
> int power1024 = 3;
>
> unsigned char mask = 0x80;
>
> int hit = 0;
>
> int bit_is_set;
>
>
>
> dec_zero(result);
>
>
>
> while(bit >= 0)
>
> {
>
> bit_is_set = (number[byte] & mask) != 0;
>
>
>
> dec_double(result, bit_is_set);
>
>
>
> if(bit_is_set)
>
> {
>
> hit = 1;
>
> }
>
>
>
> if(bit10 == 0)
>
> {
>
> if(hit)
>
> return power1024;
>
>
>
> bit10 = 9;
>
> power1024--;
>
> }
>
> else
>
> {
>
> bit10--;
>
> }
>
>
>
> bit--;
>
> mask >>= 1;
>
>
>
> if(mask == 0)
>
> {
>
> mask = 0x80;
>
> byte--;
>
> }
>
> }
>
>
>
> return 0;
>
> }
>
>
>
> /* drukuj liczbe */
>
> void dec_print(unsigned char dec[])
>
> {
>
> int i;
>
> int print = 0;
>
>
>
> for(i = 3; i >= 0; i--)
>
> {
>
> if(print == 0)
>
> print = (dec[i] != 0 || i == 0);
>
>
>
> if(print)
>
> printf("%d", (int) dec[i]);
>
> }
>
> }
>
>
>
> /* programik testujacy do zabawy*/
>
> int main()
>
> {
>
> unsigned char number[4] = {0, 0, 0, 0};
>
> unsigned char result[4] = {0, 0, 0, 0};
>
> const char* power1024_names[4] = {"B", "KB", "MB", "GB"};
>
>
>
> while(1)
>
> {
>
> unsigned try_it;
>
> int power1024;
>
>
>
> printf("liczba hex: ");
>
>
>
> scanf("%x", &try_it);
>
> printf("liczba dec = %u\n", try_it);
>
>
>
> /* katastrofa, jesli unsigned wiekszy niz 4 bajty: */
>
> *(unsigned*)number = try_it;
>
>
>
> power1024 = convert(number, result);
>
> printf("wynik = ");
>
> dec_print(result);
>
> printf("%s\n\n", power1024_names[power1024]);
>
> }
>
>
>
> return 0;
>
> }
>
>
>
> Trzeba by to jeszcze ulepszyc, aby dzialalo sensowniejsze zaokraglanie,
>
> bo teraz zaokragla brutalnie w dol i np. rozmiar 2047 B pokazuje jako 1KB.
>
>
co do zaokraglanie w dół to mz chyba ujdzie
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?
(kod raczej nie jest idealny ale jak działa
to spox,
duzy plus za odpowiedz na temat, bardziej
tak wlasnie widze grupe jako miejsce gdzie
odowiada sie na pytania a nie ... (wiadomo
co )
Następne wpisy z tego wątku
- 10.04.13 19:24 Ministerstwo Propagandy
- 10.04.13 21:24 Ireneusz Szpilewski
- 10.04.13 23:23 Ireneusz Szpilewski
- 10.04.13 23:52 firr kenobi
- 11.04.13 11:25 R.e.m.e.K
- 12.04.13 17:45 Ireneusz Szpilewski
- 13.04.13 01:31 Edek
- 15.04.13 23:23 Ireneusz Szpilewski
- 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
- Xiaomi [Chiny - przyp. JMJ] produkuje w całkowitych ciemnościach i bez ludzi
- Prezydent SZAP/USONA Trump ułaskawił prezydenta Hondurasu Hernandeza skazanego na 45 lat więzienia
- Rosjanie chwalą się prototypem komputera kwantowego. "Najważniejszy projekt naukowy Rosji"
- A Szwajcarzy kombinują tak: FinalSpark grows human neurons from stem cells and connects them to electrode arrays
- Re: Najgorszy język programowania
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
Najnowsze wątki
- 2026-01-25 rozmiar skrzyżowania
- 2026-01-24 Do czego prowadzą REGULACJE opiekuńczego państwa
- 2026-01-23 Stop na zielonym
- 2026-01-23 KSEFowy trolling
- 2026-01-23 KSEFowy trolling
- 2026-01-23 Warszawa => Software Development Team Leader (C#/.Net) <=
- 2026-01-23 Toruń => Sales Engineer (Database background) <=
- 2026-01-23 Toruń => Preseles Inżynier (background baz danych) <=
- 2026-01-23 antena gsm - kabel - antena gsm
- 2026-01-22 Złomnik ty pisowska SZMATO! ;-)
- 2026-01-22 PID - jeszcze raz
- 2026-01-22 konkret24.tvn24.pl "gwarantuje": za SAMO wylanie gnojówki pod domem tusk-ministra aresztu nie będzie! ;-)
- 2026-01-22 Prawo na wesoło: nakaz rozbiórki "dwóch przyczep samochodowych" jako budynku ;-)
- 2026-01-22 Airtagi
- 2026-01-22 Warszawa => Full Stack Developer (Go/React) <=




Nowa era rynku nieruchomości: 9 prognoz na 2026 rok