Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I can not understand what this line does:

fBuffer[fByteIndex] += 1 << (fBitIndex - 1);

where:

unsigned char fBuffer[32];
int fBitIndex;

and:

for ( int i = 0; i < 32; i++ )
     fBuffer[i] = 0;

fBitIndex = 8;

What << does there?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
223 views
Welcome To Ask or Share your Answers For Others

1 Answer

<< is the left-shift operator, and assuming fBitIndex is 8 the code

fBuffer[fByteIndex] += 1 << (fBitIndex - 1);

is equivalent to

fBuffer[fByteIndex] += 128;

Why? Because a left-shift means you shift the bits of the value "left"; in your case, 00000001 (1), is shifted left 7 times, becoming 10000000 (128).


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...