-
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.P
OSTED!not-for-mail
From: bartekltg <b...@g...com>
Newsgroups: pl.comp.programming
Subject: Re: Konwersja kodu
Date: Sat, 26 Sep 2015 18:49:45 +0200
Organization: ATMAN - ATM S.A.
Lines: 136
Message-ID: <mu6ib9$oja$1@node2.news.atman.pl>
References: <1i91n3jkf2r8s$.us4fry1ns183$.dlg@40tude.net>
NNTP-Posting-Host: 89-73-81-145.dynamic.chello.pl
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
X-Trace: node2.news.atman.pl 1443286185 25194 89.73.81.145 (26 Sep 2015 16:49:45 GMT)
X-Complaints-To: u...@a...pl
NNTP-Posting-Date: Sat, 26 Sep 2015 16:49:45 +0000 (UTC)
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101
Thunderbird/38.2.0
In-Reply-To: <1i91n3jkf2r8s$.us4fry1ns183$.dlg@40tude.net>
Xref: news-archive.icm.edu.pl pl.comp.programming:208412
[ ukryj nagłówki ]On 26.09.2015 17:27, szemrany wrote:
> Hejka,
>
> Widzę, że niektórym się na grupie nudzi i próbują podkarmiać trolla, więc
Przyłączyłbyś się do wspólnego wysiłku a nie tak tylko korzystasz;>
> może wykorzystam ten power w słusznym celu ;-)
> Mianowicie niejaki AK mnie porzucił z pomocą w konwersji kodu z C do
> Pascala i potrzebuję pomocy.
> Już prawie wszystko mam przetłumaczone, ale jeszcze pojawiają się
> wątpliwości. Oto one.
>
> ret->allocated = (size / wordbitsize + 1);
>
> gdzie allocated to int
>
> Czy w C przypisanie wyniku dzielenia konwertuje/obcina go do typu
> całkowitego?
Tak. Bardzo łatwo sprawdziłbyś to w google;>
> Kolejna rzecz.
>
> if (trailing_bits) {}
>
> gdzie trailing_bits to char
> Czy char jest odpowiednikiem typu byte z pascala?
char ma 256 różnych wartośći, ale lepiej użyć unsigned char
albo uint8_t (z <cstdint>)
> Czy takie sprawdzanie warunku to sprawdzenie czy trailing_bits <> 0?
w C i C++ if(x) to to samo co if(x!=0)
> I następna.
>
> x = (word_t) ~0;
> gdzie word_t to uint64
Nie ma czegoś takiego. Jest uint64_t.
> Czy to jest równoważne zapisowi:
>
> x = max_uint64;
Tak. Ale umiesz odpowiedzieć, dlaczego 0, które jest intem ze znakim
promuje się do _szerszego_ inta bez znaku, a dopiero potem jest negowane
bitowo? Jest na to werset w standardzie, czy to zależy od kompilatora?
;-)
Zależnie od kontekstu, pewnie lepiej:
#include <limits>
...
x = numeric_limits<uint64_t>::max();
lub
numeric_limits<decltype(res)>::max(); //wtedy jak zmienisz typ x
wartość też sie zmieni.
> Kolejny niejasny moment:
>
> ret->trailing_bits = *(ret->bitset + ret->allocated - 1) ? (word_t) ~0 : 0;
> Co ta linia przypisuje do trailing_bits?
Ta linia reprezentuje brzydkie hackerstwo;)
> I definicje, żeby było łatwiej:
>
> ret to IntBitSet
>
> typedef unsigned long long int word_t;
>
> typedef struct {
> int size;
> int allocated;
> word_t trailing_bits;
> int tot;
> word_t *bitset;
Nie zjadłeś tu klamerki?
> IntBitSet;
>
> Dziękuję :-)
ret->trailing_bits =
(ret->bitset[ret->allocated - 1] !=0 ) ? (word_t) ~0 : 0;
Teraz jasne? bitset to wskaźnik na dynamicznie zaalokowaną tablicę
(domyślam się z kontekstu), allocated to dligość zaalokowanej tablicy,
ret->bitset + ret->allocated - 1 to wskaźnik na ostatni elemnt tablicy.
* to dereferencja. Więc to to samo co
ret->bitset[ret->allocated - 1]
size,allocated bitset, jeśli robią to co myślę, zalecam wywalić
w cholerę i zastąpić przez vector:) Z drugiej strony jeśli robią
to co myśle, to powinno być +size, nie +allocated;)
Miło by było wrzucić to jako metodę
typedef struct {
int size;
int allocated;
uint64_t trailing_bits;
int tot;
uint64_t *bitset;
void set_trialing_bits() {
trailing_bits=(bitset[allocated - 1]!=0) ?
numeric_limits<uint64_t>::max() : 0;}
} IntBitSet;
Jeśli ostatni element zaalokowanej pamieci (a właśnie, czemu patrzymy
na allocated, nie size?) jest niezerowy, trailbits wypełniamy jedynkami,
w przeciwmy razie zerem.
Uwaga dotycząca ~0 jak poprzednio.
pzdr
bartekltg
Następne wpisy z tego wątku
- 26.09.15 18:57 szemrany
- 26.09.15 19:01 bartekltg
- 26.09.15 19:31 szemrany
- 26.09.15 19:35 bartekltg
- 26.09.15 19:47 M.M.
- 26.09.15 19:56 bartekltg
- 28.09.15 09:57 Tomasz Kaczanowski
Najnowsze wątki z tej grupy
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- 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
Najnowsze wątki
- 2025-01-19 Test - nie czytać
- 2025-01-19 qqqq
- 2025-01-19 Tauron przysyła aneks
- 2025-01-19 Nowa ładowarka Moya a Twizy -)
- 2025-01-18 Power BANK z ładowaniem przelotowym robi PRZERWY
- 2025-01-18 Pomoc dla Filipa ;)
- 2025-01-18 znowu kradno i sie nie dzielo
- 2025-01-18 Zieloni oszuchiści
- 2025-01-18 Zielonka => Specjalista ds. public relations <=
- 2025-01-18 Warszawa => Frontend Developer (JS, React) <=
- 2025-01-18 Warszawa => Software .Net Developer <=
- 2025-01-18 Warszawa => Developer .NET (mid) <=
- 2025-01-18 Katowice => Administrator IT - Systemy Operacyjne i Wirtualizacja <=
- 2025-01-17 Zniknął list gończy za "Frogiem". Frog się nam odnalazł?
- 2025-01-17 Kto wytłumaczy "głupiemu" prezydentowi Dudzie wielką moc prawną "dekretu premiera" TUSKA? [(C)Korneluk (2025)]