# What is the sentence mean?Thanks

Discussion in 'C Programming' started by yezi, Nov 28, 2005.

1. ### yeziGuest

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

yezi, Nov 28, 2005

2. ### pemoGuest

"yezi" <> wrote in message
news:...
> 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

pemo, Nov 28, 2005

3. ### Christopher Benson-ManicaGuest

yezi <> 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.

Christopher Benson-Manica, Nov 28, 2005
4. ### pemoGuest

"pemo" <> wrote in message
news:dmfeqi\$smk\$...
>
> "yezi" <> wrote in message
> news:...
>> 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

pemo, Nov 28, 2005