-
Data: 2015-09-26 18:22:13
Temat: Re: Konwersja kodu
Od: "M.M." <m...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie 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
- 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!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
Najnowsze wątki
- 2025-07-14 Awaria VM?
- 2025-07-14 Gdańsk => Programista Kotlin <=
- 2025-07-14 Warszawa => Junior Rekruter <=
- 2025-07-14 Warszawa => Specjalista rekrutacji IT <=
- 2025-07-14 Wkłady do zniczy...
- 2025-07-14 Warszawa => Specjalista ds. Sprzętu Komputerowego <=
- 2025-07-14 Re: PO chroniło i chroni policyjnych bandziorów [zawiasy za katowanie obywatela (Poznań czerwiec 2012)]
- 2025-07-14 Warszawa => International Freight Forwarder <=
- 2025-07-14 Warszawa => Recruiter 360 <=
- 2025-07-14 Re: Rz?Âd ZAKAZUJE magazyn?Â?w energii ?!! Nowe prawo od 14 lipca to SZOK! ??Â
- 2025-07-14 Warszawa => Sales Assistant <=
- 2025-07-13 Fałszywe alerty
- 2025-07-12 dlaczego gadacie z tym debilem
- 2025-07-13 Unia Europejska przygotowuje nowy podatek
- 2025-07-13 Unia Europejska przygotowuje nowy podatek