-
X-Received: by 10.140.92.105 with SMTP id a96mr4384qge.20.1443284533812; Sat, 26 Sep
2015 09:22:13 -0700 (PDT)
X-Received: by 10.140.92.105 with SMTP id a96mr4384qge.20.1443284533812; Sat, 26 Sep
2015 09:22:13 -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!goblin3!goblin.stu.neva.ru!news.ripco.com!news.glorb.com!k
q10no10894429igb.0!news-out.google.com!68ni27276qgg.0!nntp.google.com!v79no4858
698qge.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Sat, 26 Sep 2015 09:22:13 -0700 (PDT)
In-Reply-To: <1i91n3jkf2r8s$.us4fry1ns183$.dlg@40tude.net>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=178.36.206.163;
posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
NNTP-Posting-Host: 178.36.206.163
References: <1i91n3jkf2r8s$.us4fry1ns183$.dlg@40tude.net>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <9...@g...com>
Subject: Re: Konwersja kodu
From: "M.M." <m...@g...com>
Injection-Date: Sat, 26 Sep 2015 16:22:13 +0000
Content-Type: text/plain; charset=ISO-8859-2
Content-Transfer-Encoding: quoted-printable
Xref: news-archive.icm.edu.pl pl.comp.programming:208410
[ ukryj nagłówki ]On Saturday, September 26, 2015 at 5:27:32 PM UTC+2, szemrany wrote:
> Hejka,
>
> Widzę, że niektórym się na grupie nudzi i próbują podkarmiać trolla, więc
> 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?
Pogooglaj za konwersją i promocją typów.
http://mikrokontrolery.blogspot.com/2011/02/kurs-jez
yka-c-rzutowanie-promocja-typow.html
>
> Kolejna rzecz.
>
> if (trailing_bits) {}
>
> gdzie trailing_bits to char
>
> Czy char jest odpowiednikiem typu byte z pascala?
O ile pamiętam, to w C była gwarancja tylko co do tego:
sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long).
Może gdzieś na jakiejś platformie przy jakiś opcjach char
ma 10 bitów, moze gdzieś 16.
Jeśli ilość bitów i bajtów w typach jest ważne, to najlepiej
je przedefiniować w jakimś miejscu. Nastepnie na starcie
programu:
if( sizeof(moj_char) <= 2 ) {
printf("ten program zadziała tylko na znakach 2bajtowych");
abort();
}
> Czy takie sprawdzanie warunku to sprawdzenie czy trailing_bits <> 0?
Tak.
> I następna.
>
> x = (word_t) ~0;
>
> gdzie word_t to uint64
>
> Czy to jest równoważne zapisowi:
>
> x = max_uint64;
Zależy czym jest to zero bez sufixów.
Ja bym napisał , że:
x = ~0ULL;
jest równe
x = max_uint64;
> czyli zapalone wszystkie 64 bity?
> Kolejny niejasny moment:
>
> ret->trailing_bits = *(ret->bitset + ret->allocated - 1) ? (word_t) ~0 : 0;
Faktycznie niejasny moment. Nie lepiej unikać takich sytuacji?
Dlaczego nie sprawdzisz jak Twój kompilator na Twojej platformie z Twoim
opcjami się zachowa?
Na pewno
typ_calkowity x = 0;
wyzeruje wszystkie bity
Ustawia się wszystkie bity tak:
typ_dodatni x = ~((typ_dodatni)0);
Wyrażenie
~0
jest równe -1. Co się stanie gdy wartość ujemną się przypisze do
typu dodatniego? Odpowiadam pytaniem, po co coś takiego robić?
Chcesz wiedzieć jak się zachowa kompilator, a czy w ogóle można
sensownie się zachować, gdy ktoś każe trzymać wartość ujemną w
typie bez znaku?
I odwrotnie:
~0u
to max_uint.
Przypisywanie max_uint do inta to przekroczenie zakresu. Znowu moje
pytanie, po co coś takiego robić? Nie lepiej napisać kod tak, aby z
niego wynikały intencje programisty? Np.:
int x = -1;
Mieszanie operacji arytmetycznych ze znakiem z operacjami bitowymi to
proszenie się o kłopoty. Wiem, można uzyskać szybszy kod. Można nawet w
typie double ustawiać i zerować bity. Ale
>
> Co ta linia przypisuje do trailing_bits?
>
> 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;
> IntBitSet;
>
> Dziękuję :-)
Następne wpisy z tego wątku
- 26.09.15 18:49 bartekltg
- 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
- Alg. kompresji LZW
- 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??
Najnowsze wątki
- 2025-02-12 Warszawa => Expert Recruiter 360 <=
- 2025-02-12 Ostrów Wielkopolski => Area Sales Manager OZE <=
- 2025-02-12 Bieruń => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-02-12 Dęblin => Node.js / Fullstack Developer <=
- 2025-02-12 Kraków => PHP Full Stack Developer <=
- 2025-02-12 Karta dźwiękowa stereo
- 2025-02-12 Dęblin => JavaScript / Node / Fullstack Developer <=
- 2025-02-12 Gdańsk => Specjalista ds. Sprzedaży <=
- 2025-02-12 Łódź => NodeJS Developer <=
- 2025-02-12 Błonie => Sales Specialist <=
- 2025-02-12 Dziwne zachowanie magistrali adresowej w 8085
- 2025-02-11 Mini pecet
- 2025-02-10 Spalił się spaliniak
- 2025-02-10 zarowka wifi - z sensowna apka lub lepiej albo lokalnie lub przez web. I zeby harmonogram miala
- 2025-02-10 Chrzanów => Programista NodeJS <=