Hallo, ich bin gerade dabei das Buch "Embedded C Programming and the
Atmel AVR" zu lesen. Und da habe ich ein Verständnisproblem an folgender
stelle.
1 | char first,second,third,seed
|
2 | while{PINA.0) // Wait fot a button and
|
3 | seed++; // let the counter roll over and
|
4 | // over to form a seed.
|
5 |
|
6 | first = second = third = seed; // preload the columns
|
7 |
|
8 | do // Mix up the numbers
|
9 | { // while waitinq for tutton release.
|
10 | first ^= seed>>1; // Exclusiwe ORing in the moving seed
|
11 | second^= seed>>2; // can really stir up the numbers.
|
12 | third ^= seed>>3;
|
13 | seed++; // Keep rollins over the seed pattern
|
14 | } while (PINA.0 == 0) ; // while the button is pressed.
|
So, nun folgen meine Überlegungen:
Angenommen der Button wird gedrückt wenn seed 01001011 ist
first,second,third bekommen den wert vom seed
first = 01001011 ; second = 01001011 ; third= 01001011
Dann kommt die do while schleife:
first = first ^ seed>>1;
Und hier ist mein Problem.
first = 01001011 ^ 01001011>>1;
im buch steht am Anfang bei ">>":
schiebt den linken Operand um ein vielfaches des rechten Operands nach
rechts.
Wenn da 1>>5 steht heißt "schiebe die 1 5mal nach rechts: 00000100
Aber wie geht das damit? 01001011>>1