Dario schrieb:
> Ich verstehe das Problem immer noch nicht.
Es gibt einen fundemantalen Unterschied zwischen
und
0 um eine ANzahl Bits nach links geschoeben, ist immer noch 0!
Das ist dasselbe wie in der Mathe
1 | 1 * 1 = 1
|
2 | 1 * 2 = 2
|
3 | 1 * 3 = 3
|
4 | 1 * 4 = 4
|
5 | ...
|
ABER
1 | 0 * 1 = 0
|
2 | 0 * 2 = 0
|
3 | 0 * 3 = 0
|
4 | 0 * 4 = 0
|
5 | ...
|
egal womit du 0 multiplizierst, das Ergebnis ist immer (in allen Fällen)
0. Im Falle das du 1 multiplzierst kriegst du jeweils ein anderes
Ergebnis. Aber nicht bei 0., Die Ergebnisse sind alle gleich, nämlich 0
Nimm den binären Wert 1 her
und verschieb den um 5 Stellen nach links
1 | 0000 0001 << 5
|
2 |
|
3 | -> 0010 0000
|
das Ergebnis ist ein binärer Wert, der genau an der Bitposition 5 ein
1-Bit hat. Genau darauf zielt man ja mit 1 << xxx ab: einen Wert zu
kriegen, der genau an der Bitposition xxx ein 1 Bit aufweist.
Aber:
Das funktioniert, wenn man eine 1 schiebt.
Aber bei einer 0, so wie in 0 << PA0, ergibt die Operation keinen Sinn.
Denn eine binäre 0 kannst du nach links schieben so oft du willst
das Ergebnis ist wieder einfach nur
Daher ist
in allen Belangen völlig gleichwertig zu
Dass du da in deinem Ausdruck PA0 drinnen stehen hast, ist zwar nett,
aber komplett irrelevant, weil es nichts bewirkt. De Facto hast du
einfach nur an PORTA eine 0 zugewiesen.