KINGx - Das inoffizielle PlayStation Forum & News Portal

Normale Version: Bit-Verschiebung
Sie sehen gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

bin dabei C zu lernen und bin gerade bei Bit-Verschiebung angekommen. Die Übungsaufgabe lautet wie folgt:

Code:
int a = 2, b = 5;

d = b << a;


Da ja 5 in Binärcode 101 ist und 2 Stellen nach Links gerückt (die Zahlen am Rand herausfallen und am rechten Ende 2 Nullen aufgefüllt werden) wird müsste das Ergebnis 100 sein was die Zahl 4 in Dezimalzahlen ist (also d = 4Wink. Jedoch soll laut der Seite das Ergebnis d = 20; (was die Binärzahl 10100 sein soll) sein. Was hab ich falsch gemacht?

MfG

Du hast lediglich etwas falsch verstanden.
int ist ein .. 32 (?) bit Datentyp.
Das heißt aus
00000000000000000000000000000101
wird
00000000000000000000000000010100

Die 1 würde rausfallen sofern du
10000000000000000000000000000000
um 1 nach links shiftest.
Ah, Danke. Smile

Weißt du auch für was später sowas wie Bitmanipulation gut ist? Also die Anwendungsgebiete.

CChako :
Du hast lediglich etwas falsch verstanden.
int ist ein .. 32 (?) bit Datentyp.
Das heißt aus
00000000000000000000000000000101
wird
00000000000000000000000000010100

Die 1 würde rausfallen sofern du
10000000000000000000000000000000
um 1 nach links shiftest.


Genau !
Bei einer x86 Architektur hat der Datentyp int 32 bit und eine maximalgröße von 65535 (unsigned).
Bei einer x64 Architektur mit 64 bit hat int einen maximalwert von 4294967295 (unsigned).

Der Dank geht an Cchako, denn ich hätte nicht DARAN gedacht (war bei der suche nach der Antwort im dunkeln Big Grin )

Gruß Wink

CChako :
Du hast lediglich etwas falsch verstanden.
int ist ein .. 32 (?) bit Datentyp.
...


Grundsätzlich hast du damit Recht, es gibt aber in der Mikrocontrollerprogrammierung int mit 1 bis 32 Bit, je nachdem wie man es definiert. Nur so als kleine Anmerkung, in diesem Beispiel ist es aber relativ egalWink

thewolf16 :
Ah, Danke. Smile

Weißt du auch für was später sowas wie Bitmanipulation gut ist? Also die Anwendungsgebiete.


Es findet immer dort Anwendung wo Bitmanipulationen stattfinden, z.B. in MP3-Encodern/Decodern usw.
- Wikipedia Smile

Genial, Danke euch. Smile Kann ja dann geschlossen werden.
Referenz-URLs