Forum: Compiler & IDEs Bit Shift left (1<<PA0)


von Simon (Gast)


Angehängte Dateien:

Lesenswert?

Die Frage Hab ich schon seit Ewigkeiten...


Um ein Bit zu setzen verwendet man:

(1<<PA) in Kombination mit einem &

Ein kleines Beispiel das in C und Pascal die selbe Wirkung hat:

b entspricht 0x00;
PA0 entspricht 0x00;

C:
1
b |= (1<<PA0);

Pascal:
1
b := b or (1 shl PA0);

Warum wird hier eine 1 nach links verschoben und nicht eine 0 eingerückt 
wie im Bild?


Schonmal im Voraus vielen Dank an die ganzen Personen die mir hier schon 
geholfen haben!

von Klaus W. (mfgkw)


Lesenswert?

Simon schrieb:
> Um ein Bit zu setzen verwendet man:
>
> (1<<PA) in Kombination mit einem &

nein, in Verbindung mit einem ODER (|).

Simon schrieb:
> Warum wird hier eine 1 nach links verschoben und nicht eine 0 eingerückt
> wie im Bild?

Wenn man eine 1 (oder was auch immer) nach links schiebt, werden von 
rechts Nullen eingefügt.

Würdest du eine 0 nach links schieben, hättest du die geschobene Null 
und die von rechts eingeschobenen Nullen, also lauter Nullen.

Deshalb verschiebt man die 1. Im Ergebnis hat man die anfangs rechts 
stehende 1, entsprechend nach links geschoben, und die von rechts 
eingefügten Nullen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.