rechts schiften -> obere zwei Bits werden mit 1 gefüllt

Gast #4676401
Lesenswert?

Hallo,

ich schifte eine Variable mit Typ Integer zwei mal nach rechts (>>2). 
Ich möchte nämlich durch 4 dividieren.

Das Problem ist, dass die oberen zwei Bits mit 1 gefüllt werden 
(entspricht dann nicht einer Division durch 4). Wie stelle ich das am 
einfachsten an, dass diese mit 0 gefüllt werden?

Vielen Dank für eure Hilfe!
Gast #4676407
Lesenswert?

Chris schrieb:
> Hallo,
>
> ich schifte eine Variable
ist das so ähnlich wie: ich downloadete eine Datei?

> mit Typ Integer zwei mal nach rechts (>>2).
> Ich möchte nämlich durch 4 dividieren.
>
> Das Problem ist, dass die oberen zwei Bits mit 1 gefüllt werden
> (entspricht dann nicht einer Division durch 4). Wie stelle ich das am
> einfachsten an, dass diese mit 0 gefüllt werden?

'Signed' - 'Unsigned' als Stichwörter zur Suche
#4676411
Lesenswert?

@Chris (Gast)

>ich schifte eine Variable mit Typ Integer zwei mal nach rechts (>>2).
>Ich möchte nämlich durch 4 dividieren.

Normale Integer sind vorzeichenbehaftet.

>Das Problem ist, dass die oberen zwei Bits mit 1 gefüllt werden
>(entspricht dann nicht einer Division durch 4).

Doch, nur halt mit Vorzeichen. Das nennt man arithmetisches 
Rechtsschieben. Dort wird das oberste Bit (MSB) nachgeschoben. Im 
Gegensatz zum logischen Rechtsschieben, dort wird immer 0 nachgeschoben.

> Wie stelle ich das am einfachsten an, dass diese mit 0 gefüllt werden?

Die Variable als unsigned definieren.
Gast #4676433
Lesenswert?

Hier wäre es sinnvoll sich mal etwas mit den Grundlagen zu beschäftigen. 
Sprich zum einen mit den Zweierkomplement für die Darstellung negativer 
Zahlen und mit dem Unterschied zwischen logical und arithmetic shifting.

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