Velocity Reviews > What is the sentence mean?Thanks

# What is the sentence mean?Thanks

yezi
Guest
Posts: n/a

 11-28-2005
Hi, All:

I am reading the following code:

unsigned long crcbitbybitfast(unsigned char* p, unsigned long len) {

// fast bit by bit algorithm without augmented zero bytes.
// does not use lookup table, suited for polynom orders between
1...32.

unsigned long i, j, c, bit;
unsigned long crc = crcinit_direct;

for (i=0; i<len; i++) {

c = (unsigned long)*p++;

for (j=0x80; j; j>>=1) {

bit = crc & crchighbit;
crc<<= 1;
if (c & j) bit^= crchighbit;
if (bit) crc^= polynom;
}
}

if (refout) crc=reflect(crc, order);
crc^= crcxor;

return(crc);
}

bit^= crchighbit; what is that mean?

Thanks for any clue.

bin YE

pemo
Guest
Posts: n/a

 11-28-2005

"yezi" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed) oups.com...
> Hi, All:
>
> I am reading the following code:
>
> unsigned long crcbitbybitfast(unsigned char* p, unsigned long len) {
>
> // fast bit by bit algorithm without augmented zero bytes.
> // does not use lookup table, suited for polynom orders between
> 1...32.
>
> unsigned long i, j, c, bit;
> unsigned long crc = crcinit_direct;
>
> for (i=0; i<len; i++) {
>
> c = (unsigned long)*p++;
>
> for (j=0x80; j; j>>=1) {
>
> bit = crc & crchighbit;
> crc<<= 1;
> if (c & j) bit^= crchighbit;
> if (bit) crc^= polynom;
> }
> }
>
> if (refout) crc=reflect(crc, order);
> crc^= crcxor;
>
> return(crc);
> }
>

> bit^= crchighbit; what is that mean?

it means:

bit = bit ^ crchighbit

^ means bitwise XOr

Christopher Benson-Manica
Guest
Posts: n/a

 11-28-2005
yezi <(E-Mail Removed)> wrote:

> bit^= crchighbit; what is that mean?

bit=bit^crchighbit; /* where ^ is XOR operator */

--
Christopher Benson-Manica | I *should* know what I'm talking about - if I
ataru(at)cyberspace.org | don't, I need to know. Flames welcome.

pemo
Guest
Posts: n/a

 11-28-2005

"pemo" <(E-Mail Removed)> wrote in message
news:dmfeqi\$smk\$(E-Mail Removed)...
>
> "yezi" <(E-Mail Removed)> wrote in message
> news:(E-Mail Removed) oups.com...
>> Hi, All:
>>
>> I am reading the following code:
>>
>> unsigned long crcbitbybitfast(unsigned char* p, unsigned long len) {
>>
>> // fast bit by bit algorithm without augmented zero bytes.
>> // does not use lookup table, suited for polynom orders between
>> 1...32.
>>
>> unsigned long i, j, c, bit;
>> unsigned long crc = crcinit_direct;
>>
>> for (i=0; i<len; i++) {
>>
>> c = (unsigned long)*p++;
>>
>> for (j=0x80; j; j>>=1) {
>>
>> bit = crc & crchighbit;
>> crc<<= 1;
>> if (c & j) bit^= crchighbit;
>> if (bit) crc^= polynom;
>> }
>> }
>>
>> if (refout) crc=reflect(crc, order);
>> crc^= crcxor;
>>
>> return(crc);
>> }
>>

>
>
>> bit^= crchighbit; what is that mean?

>
> it means:
>
> bit = bit ^ crchighbit
>
> ^ means bitwise XOr

Of course, you can turn it into a logical(ish) operator via: !! e.g.,

bit = !!bit ^ !!crchighbit