Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C Programming > How does the cycle index control the loop

Reply
Thread Tools

How does the cycle index control the loop

 
 
fl
Guest
Posts: n/a
 
      05-07-2011
Hi,

I do not understand the index variable 'j' function below. How deos j
control to end of the for loop?
It cycles 8 times from step tracking. When does j equal 0, it ends the
loop. I do not understand why it ends when j==0.

Thanks in advance



..............
for (j=0x80; j; j>>=1) {
bit = crc & crchighbit;
crc<<= 1;
if (c & j)
crc|= 1;
if (bit)
crc^= polynom;
}
 
Reply With Quote
 
 
 
 
fl
Guest
Posts: n/a
 
      05-07-2011
On 7 mai, 12:37, fl <(E-Mail Removed)> wrote:
> Hi,
>
> I do not understand the index variable 'j' function below. How deos j
> control to end of the for loop?
> It cycles 8 times from step tracking. When does j equal 0, it ends the
> loop. I do not understand why it ends when j==0.
>
> Thanks in advance
>
> .............
> for (j=0x80; j; j>>=1) {
> *bit = crc & crchighbit;
> *crc<<= 1;
> *if (c & j)
> * * crc|= 1;
> *if (bit)
> * * crc^= polynom;
>
>
>
> }- Masquer le texte des messages précédents -
>
> - Afficher le texte des messages précédents -


The second item 'j' in the for loop means it is non-zero. This non-
zero as the termination criteria? Thanks.
 
Reply With Quote
 
 
 
 
Lew Pitcher
Guest
Posts: n/a
 
      05-07-2011
On May 7, 2011 12:37, in comp.lang.c, http://www.velocityreviews.com/forums/(E-Mail Removed) wrote:

> Hi,
>
> I do not understand the index variable 'j' function below. How deos j
> control to end of the for loop?
> It cycles 8 times from step tracking. When does j equal 0, it ends the
> loop. I do not understand why it ends when j==0.
>
> Thanks in advance


You can read the statement
for (j=0x80; j; j>>=1) { /* stuff */ }

as
initialize j to 0x80
while j is not zero

do some stuff

drop the low-order bit of j, shift the remaining bits right by 1 bit,
and fill in the vacated high order bit with a 0

go back to the top of the loop.


If you walk the loop through:
j is set to 0x80, j is not zero, the loop body is run, and j becomes 0x40
j is 0x40, j is not zero, the loop body is run, and j becomes 0x20
j is 0x20, j is not zero, the loop body is run, and j becomes 0x10
j is 0x10, j is not zero, the loop body is run, and j becomes 0x08
j is 0x08, j is not zero, the loop body is run, and j becomes 0x04
j is 0x04, j is not zero, the loop body is run, and j becomes 0x02
j is 0x02, j is not zero, the loop body is run, and j becomes 0x01
j is 0x01, j is not zero, the loop body is run, and j becomes 0x00
j is 0x00, j is zero, the loop terminates

That's 8 times that j is not zero, and the loop body is executed.

HTH
--
Lew Pitcher
Master Codewright & JOAT-in-training | Registered Linux User #112576
Me: http://pitcher.digitalfreehold.ca/ | Just Linux: http://justlinux.ca/
---------- Slackware - Because I know what I'm doing. ------


 
Reply With Quote
 
Kleuskes & Moos
Guest
Posts: n/a
 
      05-07-2011
On May 7, 6:45*pm, fl <(E-Mail Removed)> wrote:
> On 7 mai, 12:37, fl <(E-Mail Removed)> wrote:
>
>
>
>
>
>
>
>
>
> > Hi,

>
> > I do not understand the index variable 'j' function below. How deos j
> > control to end of the for loop?
> > It cycles 8 times from step tracking. When does j equal 0, it ends the
> > loop. I do not understand why it ends when j==0.

>
> > Thanks in advance

>
> > .............
> > for (j=0x80; j; j>>=1) {
> > *bit = crc & crchighbit;
> > *crc<<= 1;
> > *if (c & j)
> > * * crc|= 1;
> > *if (bit)
> > * * crc^= polynom;

>
> > }- Masquer le texte des messages précédents -

>
> > - Afficher le texte des messages précédents -

>
> The second item 'j' in the for loop means it is non-zero. This non-
> zero as the termination criteria? Thanks.


j <-- 0b10000000
While j is not 0 (any non-zero value i interpreted as true)
Shift j one position to the right.

The single one will then be shifted out after 8 iterations, resulting
in j=0 (i.e. false) and the loop stops.

 
Reply With Quote
 
Keith Thompson
Guest
Posts: n/a
 
      05-07-2011
fl <(E-Mail Removed)> writes:
> I do not understand the index variable 'j' function below. How deos j
> control to end of the for loop?
> It cycles 8 times from step tracking. When does j equal 0, it ends the
> loop. I do not understand why it ends when j==0.
>
> .............
> for (j=0x80; j; j>>=1) {
> bit = crc & crchighbit;
> crc<<= 1;
> if (c & j)
> crc|= 1;
> if (bit)
> crc^= polynom;
> }


Whenever an expression (say, "foo") appears in a context that requires a
condition (if, while, do-while, the second clause of a for loop), the
result of the expression is compared to zero, and the condition is true
if the expression is unequal to zero.

For example:

int foo = 0;
if (foo) puts("This will not be printed");
foo = 1;
if (foo) puts("This will be printed");
foo = 42;
if (foo) puts("This will also be printed");

Prior to the C99 standard, C did not have a dedicated boolean type.
Instead, any scalar (even a pointer) could be used as a condition,
with 0 meaning false and non-0 meaning true. C99 added _Bool
(and bool, if you #include <stdbool.h>), but it was merely tacked
onto the existing language; the use of arbitrary scalar values as
conditions is unchanged.

See section 9 of the comp.lang.c FAQ, <http://www.c-faq.com/>.

--
Keith Thompson (The_Other_Keith) (E-Mail Removed) <http://www.ghoti.net/~kst>
Nokia
"We must do something. This is something. Therefore, we must do this."
-- Antony Jay and Jonathan Lynn, "Yes Minister"
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Re: How include a large array? Edward A. Falk C Programming 1 04-04-2013 08:07 PM
Triple nested loop python (While loop insde of for loop inside ofwhile loop) Isaac Won Python 9 03-04-2013 10:08 AM
"for" cycle with assigning index dmitrey Python 5 08-16-2009 06:36 AM
When does control data binding occur in a life cycle of a page? bogdan ASP .Net 1 03-20-2008 08:21 PM
sorting index-15, index-9, index-110 "the human way"? Tomasz Chmielewski Perl Misc 4 03-04-2008 05:01 PM



Advertisments