-
Path: news-archive.icm.edu.pl!agh.edu.pl!news.agh.edu.pl!newsfeed2.atman.pl!newsfeed.
atman.pl!news.task.gda.pl!not-for-mail
From: "Ireneusz Szpilewski" <i...@s...opole.pl>
Newsgroups: pl.comp.programming
Subject: Re: zamiana liczby
Date: Wed, 10 Apr 2013 23:23:21 +0200
Organization: CI TASK http://www.task.gda.pl/
Lines: 152
Message-ID: <op.wvcgc7bbwyk85p@localhost>
References: <kjsgog$lu7$1@node2.news.atman.pl> <op.wvaq0ku4wyk85p@localhost>
<kk2b5u$k5s$1@node1.news.atman.pl>
NNTP-Posting-Host: 178.252.26.75.internetia.net.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed; delsp=yes
Content-Transfer-Encoding: Quoted-Printable
X-Trace: news.task.gda.pl 1365628994 20922 178.252.26.75 (10 Apr 2013 21:23:14 GMT)
X-Complaints-To: a...@n...task.gda.pl
NNTP-Posting-Date: Wed, 10 Apr 2013 21:23:14 +0000 (UTC)
User-Agent: Opera Mail/12.14 (Linux)
Xref: news-archive.icm.edu.pl pl.comp.programming:202540
[ ukryj nagłówki ]On Wed, 10 Apr 2013 02:19:10 +0200, Borneq <b...@a...hidden.pl>
wrote:
> Użytkownik "Ireneusz Szpilewski" <i...@s...opole.pl> napisał w
> wiadomości news:op.wvaq0ku4wyk85p@localhost...
>> Trzeba by to jeszcze ulepszyc, aby dzialalo sensowniejsze zaokraglanie,
>> bo teraz zaokragla brutalnie w dol i np. rozmiar 2047 B pokazuje jako
>> 1KB.
>
> Wystarczy dodać najpierw 512. Ale czy na pewno dzielić przez 1024 ?, dla
> mnie znacznie wygodniejsze byłoby 1000
Tu jest wersja z kB = 1000B zamiast KB = 1024B, dla prostoty tez zaokragla
w dol:
#include <stdio.h>
/* zeruj wynik */
void dec_zero(unsigned char dec[10])
{
int i;
for(i = 0; i < 10; i++)
dec[i] = 0;
}
/* pomnoz wynik razy 2 i dodaj carry (0 lub 1), *leftmost = najstarsza
cyfra wyniku */
void dec_double(unsigned char dec[10], int carry, int* leftmost)
{
int i;
int digit;
for(i = 0; i < *leftmost; i++)
{
digit = 2 * dec[i] + carry;
if(digit > 9)
{
digit -= 10;
carry = 1;
}
else
{
carry = 0;
}
dec[i] = digit;
}
if(carry)
{
dec[i] = 1;
(*leftmost)++;
}
}
/* wylicz wynik result[10] dla podanej liczby number[4] */
/* i zwroc najstarsza cyfre wyniku (liczona od 1)) */
int convert(const unsigned char number[4], unsigned char result[10])
{
int byte = 3;
unsigned char mask = 0x80;
int bit_is_set;
int leftmost = 1;
dec_zero(result);
while(1)
{
bit_is_set = (number[byte] & mask) != 0;
dec_double(result, bit_is_set, &leftmost);
mask >>= 1;
if(mask == 0)
{
if(byte == 0)
break;
mask = 0x80;
byte--;
}
}
return leftmost;
}
/* drukuj wynik */
void dec_print(unsigned char dec[10], int leftmost, const char*
power1000_names[4])
{
int power = (leftmost - 1) / 3;
int count = leftmost - power * 3;
int i;
for(i = 1; i <= count; i++)
{
printf("%d", (int) dec[leftmost - i]);
}
printf(power1000_names[power]);
}
/* programik testujacy */
int main()
{
unsigned char number[4] = {0, 0, 0, 0};
unsigned char result[10];
const char* power1000_names[4] = {"B", "kB", "MB", "GB"};
while(1)
{
unsigned try_it;
int leftmost;
printf("liczba: ");
scanf("%u", &try_it);
/* katastrofa, jesli unsigned wiekszy niz 4 bajty: */
*(unsigned*)number = try_it;
leftmost = convert(number, result);
printf("wynik = ");
dec_print(result, leftmost, power1000_names);
printf("\n\n");
}
return 0;
}
Irek
--
Using Opera's mail client: http://www.opera.com/mail/
Następne wpisy z tego wątku
- 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
- 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
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
Najnowsze wątki
- 2026-01-06 Rozwód w Santanderze z prostokątną kobietą...
- 2026-01-06 Skąd diody LED 1,5V?
- 2026-01-06 Nowum!!! -- Moje ID
- 2026-01-06 Metoda na fotoradar
- 2026-01-05 I jeszcze jeden
- 2026-01-05 Jaworek;)
- 2026-01-05 Warszawa => Project Manager (AI and innovation) <=
- 2026-01-05 Gdańsk => Konsultant ERP Microsoft Dynamics 365 Commerce <=
- 2026-01-05 Jeśli nie było "aktu wojny" to była "zorganizowana grupa przestępcza" (terroryści) dokonująca zabójstw?
- 2026-01-05 Walka Lewicy o B2B na etat
- 2026-01-05 zamiana B2B na etat
- 2026-01-05 Wykonanie w USA zagranicznych nakazów aresztowań bez udziału USA na (byłych) prezydentów też będzie legalne?
- 2026-01-04 Apollo Comm
- 2026-01-04 Kupować SREBRO?
- 2026-01-04 PICkit3 mnie pokonał




5 Najlepszych Programów do Księgowości w Chmurze - Ranking i Porównanie [2025]