Thread View: be.comp.programming
13 messages
13 total messages
Started by Ivan Van den Bossche
Sun, 18 May 2003 11:13
VRAAGJE C/C++
Author: Ivan Van den Bossche
Date: Sun, 18 May 2003 11:13
Date: Sun, 18 May 2003 11:13
11 lines
1430 bytes
1430 bytes
Hi,
Zou er iemand mij kunnen uitleggen wat de volgende functie doet?
int TestBit(BYTE val, int intIndex)
{
return ((val & (1 << intIndex)) > index) ? 1 : 0;
}
Alvast bedankt
Ivan
Re: VRAAGJE C/C++
Author: Marcus
Date: Sun, 18 May 2003 11:27
Date: Sun, 18 May 2003 11:27
12 lines
1409 bytes
1409 bytes
Ivan Van den Bossche wrote:
> Zou er iemand mij kunnen uitleggen wat de volgende functie doet?
>
> int TestBit(BYTE val, int intIndex)
> {
> return ((val & (1 << intIndex)) > index) ? 1 : 0;
> }
Misschien als je vertelt hoe BYTE is gedefinieert, en waar 'index' weg
komt.
Mark
Re: VRAAGJE C/C++
Author: Andreas Sikkema
Date: Sun, 18 May 2003 12:46
Date: Sun, 18 May 2003 12:46
11 lines
1579 bytes
1579 bytes
Marcus wrote: > Misschien als je vertelt hoe BYTE is gedefinieert, en waar 'index' weg > komt. Volgens mij is een BYTE een byte en index is een tellertje binnen de byte, of zit ik erg mis. Zou de code niet de 'index'-de bit uit val testen of die 1 of 0 is? -- Andreas
Re: VRAAGJE C/C++
Author: Marcus
Date: Sun, 18 May 2003 13:22
Date: Sun, 18 May 2003 13:22
34 lines
2224 bytes
2224 bytes
Andreas Sikkema wrote:
> Marcus wrote:
>
>>> int TestBit(BYTE val, int intIndex)
>>> {
>>> return ((val & (1 << intIndex)) > index) ? 1 : 0;
>>> }
>> Misschien als je vertelt hoe BYTE is gedefinieert, en waar 'index'
>> weg komt.
>
> Volgens mij is een BYTE een byte en index is een tellertje binnen de
> byte, of zit ik erg mis. Zou de code niet de 'index'-de bit uit val
> testen of die 1 of 0 is?
(1 << intIndex) zet volgens mij de inIndexde-bit vanaf 'rechts' op 1
doet een bitwise AND met val, en het lijkt me dus dat:
val & (1 << intIndex))
oplevert of de intIndexde bit van val 1 of 0 is, en dat gedeelte met >
index zie ik het nut niet van in, zolang ik de context niet snap (index
is kennelijk een globale variabele, maar waar staat die dan voor.
Maar wat het oplevert lijkt me:
de intIndex-de bit van val is 1
&&
2^intIndex > index
Maar wat de lol is van dat tweede gedeelte kan ik zonder context niet
beoordelen.
Mark
PS. mijn C kennis is niet 100% dus het zou kunnen dat ik een foutje heb
gemaakt, maar volgens mij klopt t zo
Re: VRAAGJE C/C++
Author: Bert Peers
Date: Sun, 18 May 2003 13:28
Date: Sun, 18 May 2003 13:28
16 lines
2088 bytes
2088 bytes
Marcus wrote:
>>>>int TestBit(BYTE val, int intIndex)
>>>>{
>>>> return ((val & (1 << intIndex)) > index) ? 1 : 0;
>>>>}
> val & (1 << intIndex))
> oplevert of de intIndexde bit van val 1 of 0 is, en dat gedeelte met >
> index zie ik het nut niet van in, zolang ik de context niet snap (index
> is kennelijk een globale variabele, maar waar staat die dan voor.
Wellicht voor een "negeer" masker. Als index bv 0x0f is, gaan
de vier meest rechtse bits false opleveren, of ze nu gezet zijn
of niet. Niet zo'n hippe code, dit.
Bert
Re: VRAAGJE C/C++
Author: kansloos
Date: Sun, 18 May 2003 13:30
Date: Sun, 18 May 2003 13:30
17 lines
1558 bytes
1558 bytes
In nl.comp.programmeren Ivan Van den Bossche <ivan.van.den.bossche@pandora.be> schreef,
> Hi,
>
> Zou er iemand mij kunnen uitleggen wat de volgende functie doet?
>
> int TestBit(BYTE val, int intIndex)
> {
> return ((val & (1 << intIndex)) > index) ? 1 : 0;
> }
>
Hij kijkt of bit 'intIndex' in 'val' aan staat.
Dus val = 000100 (als bits) en intIndex = 2(10-based) dan return true;
En val = 110111 en intIndex = 3 dan return false;
Dit alles onder de voorwaarde dat index >= 1.
Re: VRAAGJE C/C++
Author: Marcus
Date: Sun, 18 May 2003 13:39
Date: Sun, 18 May 2003 13:39
24 lines
1867 bytes
1867 bytes
kansloos@xs4all.nl wrote:
> In nl.comp.programmeren Ivan Van den Bossche
> <ivan.van.den.bossche@pandora.be> schreef,
>> Hi,
>>
>> Zou er iemand mij kunnen uitleggen wat de volgende functie doet?
>>
>> int TestBit(BYTE val, int intIndex)
>> {
>> return ((val & (1 << intIndex)) > index) ? 1 : 0;
>> }
>>
>
> Hij kijkt of bit 'intIndex' in 'val' aan staat.
>
> Dus val = 000100 (als bits) en intIndex = 2(10-based) dan return true;
> En val = 110111 en intIndex = 3 dan return false;
>
> Dit alles onder de voorwaarde dat index >= 1.
Dit laatste punt volg ik niet helemaal, > is to gewoon groter dan, of
klopt mijn c kennis hier even niet?
Mark
Re: VRAAGJE C/C++
Author: kansloos
Date: Sun, 18 May 2003 13:59
Date: Sun, 18 May 2003 13:59
27 lines
1992 bytes
1992 bytes
In nl.comp.programmeren Marcus <doei@bannerswapnl.com> schreef,
> kansloos@xs4all.nl wrote:
>> In nl.comp.programmeren Ivan Van den Bossche
>> <ivan.van.den.bossche@pandora.be> schreef,
>>> Hi,
>>>
>>> Zou er iemand mij kunnen uitleggen wat de volgende functie doet?
>>>
>>> int TestBit(BYTE val, int intIndex)
>>> {
>>> return ((val & (1 << intIndex)) > index) ? 1 : 0;
>>> }
>>>
>>
>> Hij kijkt of bit 'intIndex' in 'val' aan staat.
>>
>> Dus val = 000100 (als bits) en intIndex = 2(10-based) dan return true;
>> En val = 110111 en intIndex = 3 dan return false;
>>
>> Dit alles onder de voorwaarde dat index >= 1.
>
> Dit laatste punt volg ik niet helemaal, > is to gewoon groter dan, of
> klopt mijn c kennis hier even niet?
Oeps, ja, het moet zijn index >= 0, maar eigenlijk is dat gedeelte onzin,
er kompt al true (of false) uit het '(val & (1 << intIndex))' gedeelte, waarom
dat netjes/dwangmatig naar 1 of 0 moet worden omgezet snap ik niet.
Re: VRAAGJE C/C++
Author: Marcus
Date: Sun, 18 May 2003 14:43
Date: Sun, 18 May 2003 14:43
39 lines
2493 bytes
2493 bytes
kansloos@xs4all.nl wrote:
> In nl.comp.programmeren Marcus <doei@bannerswapnl.com> schreef,
>> kansloos@xs4all.nl wrote:
>>> In nl.comp.programmeren Ivan Van den Bossche
>>> <ivan.van.den.bossche@pandora.be> schreef,
>>>> Hi,
>>>>
>>>> Zou er iemand mij kunnen uitleggen wat de volgende functie doet?
>>>>
>>>> int TestBit(BYTE val, int intIndex)
>>>> {
>>>> return ((val & (1 << intIndex)) > index) ? 1 : 0;
>>>> }
>>>>
>>>
>>> Hij kijkt of bit 'intIndex' in 'val' aan staat.
>>>
>>> Dus val = 000100 (als bits) en intIndex = 2(10-based) dan return
>>> true;
>>> En val = 110111 en intIndex = 3 dan return false;
>>>
>>> Dit alles onder de voorwaarde dat index >= 1.
>>
>> Dit laatste punt volg ik niet helemaal, > is to gewoon groter dan, of
>> klopt mijn c kennis hier even niet?
>
> Oeps, ja, het moet zijn index >= 0, maar eigenlijk is dat gedeelte
> onzin,
> er kompt al true (of false) uit het '(val & (1 << intIndex))'
> gedeelte, waarom dat netjes/dwangmatig naar 1 of 0 moet worden
> omgezet snap ik niet.
Juist niet toch? Want als index groter of gelijk is aan '(val & (1 <<
intIndex))' dan evalueert hij juist naar false. Dat doet mij vermoeden
dat index als een soort drempelwaarde wordt gebruikt. (dat ie alle bits
onder log(index) sowieso naar false evalueert). Maar het nut ervan zie
ik niet zo in.
Mark
Re: VRAAGJE C/C++
Author: edg
Date: Sun, 18 May 2003 20:03
Date: Sun, 18 May 2003 20:03
30 lines
1990 bytes
1990 bytes
"Ivan Van den Bossche" <ivan.van.den.bossche@pandora.be> schreef in bericht
news:CVJxa.7359$1u5.531@afrodite.telenet-ops.be...
> Hi,
>
> Zou er iemand mij kunnen uitleggen wat de volgende functie doet?
>
> int TestBit(BYTE val, int intIndex)
> {
> return ((val & (1 << intIndex)) > index) ? 1 : 0;
> }
er gebeuren hier wel verschilende zaken: (veronderstel een byte van 8 bits
voor het gemak)
1) 1 << intindex : 0000:0001 wordt intindex posities naar links
geschoven vb als intindex 3 is, wordt 1 3 posities naar links geschoven en
krijgt dan de waarde 0000:0100
2) evaluatie van val & en de waarde die is berekend in 1) dit is een
bitwise and operatie (overeenkomstige bit is 1 als beide bits 1 is, anders
0)
3) waarde 2) wordt gebruikt in een ? expressie (te vergelijken met if ...
then
test ? (waarde als test positief) : (waarde als test niet positief is)
> Alvast bedankt
> Ivan
>
>
Re: VRAAGJE C/C++
Author: Dr.Ruud
Date: Mon, 19 May 2003 00:33
Date: Mon, 19 May 2003 00:33
16 lines
1664 bytes
1664 bytes
Ivan Van den Bossche skribis:
> Zou er iemand mij kunnen uitleggen wat de volgende functie doet?
>
> int TestBit(BYTE val, int intIndex)
> {
> return ((val & (1 << intIndex)) > index) ? 1 : 0;
> }
Zou misschien dit worden bedoeld?
return ((val & (1 << intIndex)) >> intIndex) ? 1 : 0;
Niet dat die '>> intIndex' dan nodig is overigens.
--
Affijn, Ruud
Re: VRAAGJE C/C++
Author: Marcus
Date: Mon, 19 May 2003 07:09
Date: Mon, 19 May 2003 07:09
20 lines
1674 bytes
1674 bytes
Dr.Ruud wrote:
> Ivan Van den Bossche skribis:
>
>> Zou er iemand mij kunnen uitleggen wat de volgende functie doet?
>>
>> int TestBit(BYTE val, int intIndex)
>> {
>> return ((val & (1 << intIndex)) > index) ? 1 : 0;
>> }
>
> Zou misschien dit worden bedoeld?
> return ((val & (1 << intIndex)) >> intIndex) ? 1 : 0;
>
> Niet dat die '>> intIndex' dan nodig is overigens.
Of de ?1:0 is juist niet nodig (en eigenlijk allebei niet, maar t _kan_
natuurlijk dat de procedure die dit terugkrijgt expliciet op 0 of 1
checkt)
Mark
Re: VRAAGJE C/C++
Author: Stefan Arentz
Date: Mon, 19 May 2003 09:31
Date: Mon, 19 May 2003 09:31
26 lines
2022 bytes
2022 bytes
"Marcus" <doei@bannerswapnl.com> writes:
> Dr.Ruud wrote:
> > Ivan Van den Bossche skribis:
> >
> >> Zou er iemand mij kunnen uitleggen wat de volgende functie doet?
> >>
> >> int TestBit(BYTE val, int intIndex)
> >> {
> >> return ((val & (1 << intIndex)) > index) ? 1 : 0;
> >> }
> >
> > Zou misschien dit worden bedoeld?
> > return ((val & (1 << intIndex)) >> intIndex) ? 1 : 0;
> >
> > Niet dat die '>> intIndex' dan nodig is overigens.
>
> Of de ?1:0 is juist niet nodig (en eigenlijk allebei niet, maar t _kan_
> natuurlijk dat de procedure die dit terugkrijgt expliciet op 0 of 1
> checkt)
C 101:
return ((val >> index) & 1);
S.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads