bitweise links shift in C

Gast #2290768
Lesenswert?

Hallo,

ich versuche hier gerade einen C Code zu verstehen.
Eine Variable v wird als int deklariert und bekommmt den Wert dezimal 0 
zugewiesen.

In einer Funktion wird dann später

nächste Variable = (v<<8)

festgelegt.

Bedeutet died, dass nächste Variable nun den Wert 256 hat ?

Was würde denn aus nächster Variable in der Funktion werden, wenn v 
zuvor einen Wert von 64 hätte ? Auch wieder 256 ?

Danke
#2290780
Lesenswert?

@  tom (Gast)

>Eine Variable v wird als int deklariert und bekommmt den Wert dezimal 0
>zugewiesen.

>In einer Funktion wird dann später

>nächste Variable = (v<<8)

>festgelegt.

>Bedeutet died, dass nächste Variable nun den Wert 256 hat ?

Wie soll das gehen? Wenn man 00000000 achtmal links schiebt ist es immer 
noch Null.

>Was würde denn aus nächster Variable in der Funktion werden, wenn v
>zuvor einen Wert von 64 hätte ? Auch wieder 256 ?

Lies mal was zum Thema Arithmetik von Binärzahlen.
Was pssiert, wenn man bei einer Dezimalzahl im normalen Leben das Komma 
um eine Stelle nach rechts schiebt?

MfG
Falk
Moderator Persönliche Seite #2290781
Lesenswert?

tom schrieb:
> Eine Variable v wird als int deklariert und bekommmt den Wert dezimal 0
> zugewiesen.
>
> In einer Funktion wird dann später
>
> nächste Variable = (v<<8)
>
> festgelegt.
>
> Bedeutet died, dass nächste Variable nun den Wert 256 hat ?

Nein. Eine 0 kannst Du schieben, bis Du alt wirst. Es bleibt 0.

Ham wer schon en der Schull in der Kaygass Nummer 0 jelernt...

Jruß.. ähem Gruß,

Frank
Moderator Persönliche Seite #2290816
Lesenswert?

tom schrieb:
> Ok. Eine Null zu schieben ... habe ich begriffen. Leider hilft mir das
> beim Code nun auch nicht weiter :-(
>
> aus 64 --> 0b0100 0000 wird
> 16384  --> 0b0100 0000 0000 0000 ?

Wenn Du eine Zahl 1mal nach links schiebst, dann entspricht dies einer 
Multiplikation mit 2. Wenn Du sie 8mal schiebst, dann entspricht dies 
einer Multiplikation mit 2*2*2*2*2*2*2*2 = 256.

256 x 64 = 16384. Dein Schaubild mit den binären Nullen ist korrekt.
Gast #2291034
Lesenswert?

Rene Schube schrieb:
> Ein schickes Tool um soetwas 'per Hand' nach zu rechnen ist BinCalc.

Per Hand und rechnen lassen durch einen besseren Taschenrechner 
widerprechen sich irgendwie. Das einzig sinnvolle, um sowas per Hand zu 
machen, ist Stift und Papier, wenn man es im Kopf nicht kann. Dann 
versteht man auch, was man tut.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren