🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #1052

Re: Operacje na bitach

#1052
From: Karpierz
Date: Sat, 31 Jan 1998 15:51
52 lines
2882 bytes
Qrczak <qrczak@knm.org.pl> napisal
> On 29 Jan 1998, Karpierz wrote:
[...]
> Więc można się zająć liczbami ujemnymi. Ich nie da się skonwertować na
> unsigned long bez straty. Są dwie możliwości (załóżmy na chwilę, że
> sizeof (int) == 2, sizeof (long) == 4). Albo (unsigned long) (int) (-1)
> jest równe 0xFFFFFFFF, albo 0xFFFF. Twierdzę, że pierwsza jest o wiele
> logiczniejsza.
> 
> Otóż konwertujemy -1 na unsigned long. Wszystko jedno, jakiego dokładnie
> typu jest to -1. Ważne, że to jest dokładnie -1 i chcemy to zapisać w
> unsigned long. "Najbliższą" minus jedynce wartością typu unsigned long
> jest 0xFFFFFFFF, więc tak zostanie zapisane, niezależnie od tego, skąd
> ta -1 się wzięła.

Otoz wlasnie nie jest wszystko jedno jakiego typu jest -1;
Musisz pamietac o tym ze -1 to nie to samo co -1U. 

Wiec np:

int               a = -1;
unsigned int b = -1;

(unsigned long) a   jest rowne 0xFFFFFFFF  
(unsigned long) b   jest rowne 0x0000FFFF

czyli wlasnie wg zasady ktara napisalem wczesniej:

"Czyli faktycznie o propagacji znaku decyduje nie typ na ktory
rzutujemy ale typ wartosci rzutowanej"

Wniosek z calej tej dyskusji przynajmniej dla mnie jest jeden.
Nie wszystko jest takie oczywiste jak sie na pierwszy rzut oka 
wydaje i do konca madrych tu nie ma jesli cos w raporcie 
jezyka /nie wiem jak w ANSI, ja mowie o K&R/
nie jest do konca scisle okreslone.
Nie chodzi mi tu o ([unsigned] int) -> ([unsigned] long), to akurat jest,
ale glownie o ([unsigned] short) -> ([unsigned] long) i o 
i o ([unsigned] char) -> ([unsigned] long). 

Przy nauce C i w praktyce wiele mi to zawsze sprawialo
klopotow i wiele ukrytych bledow tez temu zawdzieczam
i dlatego poruszylem ten temat.
Inn sprawa ze napewno nie wart jest on tak rozbudowanej
dyskusji, ale.. jakos tak wyszlo ..:))
Moze damy pokoj juz tym rzutom ? :)
Jest tyle ciekawszych tematow... 

-- 
Pozdrawiam                                         Adam Karpierz   
mailto:karpierz@intertele.pl
http://www.intertele.pl/users/karpierz 
Technical Details
Message-ID: <01bd2e49$756e5fe0$9cbaccc2@karpierz.dyn.ml.org>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.nask.pl!ict.pwr.wroc.pl!not-for-mail
References: <34D0605D.5843@imm.org.pl> <01bd2caf$70afa4a0$8cbaccc2@karpierz.dyn.ml.org> <34D0BBCF.ADA1488D@obop.com.pl> <01bd2ce4$bb394460$8ebaccc2@karpierz.dyn.ml.org> <Pine.LNX.3.96.980131092148.11396M-100000@qrnik.knm.org.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!news.icm.edu.pl!news.nask.pl!ict.pwr.wroc.pl!not-for-mail
From: "Karpierz" <karpierz@inter.intertele.pl>
Newsgroups: pl.comp.lang.c
Subject: Re: Operacje na bitach
Date: 31 Jan 1998 15:51:00 GMT
Organization: Technical University of Wroclaw, Poland
Lines: 53
Message-ID: <01bd2e49$756e5fe0$9cbaccc2@karpierz.dyn.ml.org>
References: <34D0605D.5843@imm.org.pl> <01bd2caf$70afa4a0$8cbaccc2@karpierz.dyn.ml.org> <34D0BBCF.ADA1488D@obop.com.pl> <01bd2ce4$bb394460$8ebaccc2@karpierz.dyn.ml.org> <Pine.LNX.3.96.980131092148.11396M-100000@qrnik.knm.org.pl>
NNTP-Posting-Host: ppp144.intertele.pl
X-Newsreader: Microsoft Internet News 4.70.1161
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit