Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > C/C++
You last visited: Today at 18:57

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Bitverschiebung negative Zahl

Discussion on Bitverschiebung negative Zahl within the C/C++ forum part of the Coders Den category.

Reply
 
Old   #1
 
Belur's Avatar
 
elite*gold: 0
Join Date: Jul 2009
Posts: 3,441
Received Thanks: 1,473
Bitverschiebung negative Zahl

Hey,

habe eine Frage zur Bitverschiebung.

Wenn ich beispielsweise einen 8Bit Wert habe:

0000 1010, also die dezimale 10, und den Bitweise verschieben möchte, beispielsweise: 10 << 2;
Dann "schiebe" ich ja eigentlich zwei Nullen von rechts rein, was in einer
0010 1000, also 40 resultieren würde.

Wie läuft das mit negativen Zahlen? Wenn die im Zweierkomplement vorliegen, muss ich dann Einsen anstatt Nullen "reinschieben" ?

Die Dokumentation sagt nur:

Quote:
5 The result of E1 >> E2 is E1 right-shifted E2 bit positions. If E1 has an unsigned type
or if E1 has a signed type and a nonnegative value, the value of the result is the integral
part of the quotient of E1 / 2E2. If E1 has a signed type and a negative value, the
resulting value is implementation-defined.
Was für mich keine klare Aussage ist.

Grüße
Belur is offline  
Old 02/03/2014, 14:39   #2
 
Padmak's Avatar
 
elite*gold: 58
Join Date: Jun 2008
Posts: 2,311
Received Thanks: 8,420
Deine Frage bezieht sich auf left-shifting, der Doku-Auszug aber auf right-shifting.
Was von beidem willst du nun wissen? Ich geh jez einfach mal von rechts aus.

Grundsätzlich ist shifting für negative Zahlen *eher* ungeeignet, eben genau wegen dieser Problematik.
Du kannst natürlich immer einfach das höchste Bit auf 1 setzen, wenn die vorherige Zahl negativ war.
Ich hab das ganze jetzt mal mit GCC getestet, bei 'ner negativen Zahl schiebt er von rechts auch lauter 1er rein.
Du kannst natürlich zur Sicherheit alles links der originalen Bits mit 1ern füllen, dann bleibts negativ

Padmak
Padmak is offline  
Thanks
1 User
Old 02/03/2014, 16:13   #3


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Bitshifting ist für Zahlenoperationen auf binärer Ebene gedacht, da gibt es kein negativ. Mir fallen nur wenige Use-Cases ein, bei denen einen das Vorzeichen einer solchen Zahl interessieren würde.

Soweit ich weiß, ist das plattformabhängig, ob mit 1en, 0en oder dem letzten Bit an der jeweiligen Seite aufgefüllt wird.

Wenn ich mich recht erinnere, wird bei Intel von links mit dem Vorzeichenbit und von rechts mit 0 (oder war es mit dem Carryflag?) aufgefüllt.
MrSm!th is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
SUCH TRAVOS EQ ZAHL 25€ PSC
05/05/2013 - Metin2 Trading - 6 Replies
Hallo, Suche auf dem Server Travos Krieger EQ bis level 50 wenn ihr was habt dann PN mich schreibt hier drunter oder addet skype. Crap wird Ignoriert. Skype: timschmied
[VB.NET] Zahl > 50 elseif Zahl > 70 then...
02/25/2013 - .NET Languages - 5 Replies
Hi, hab mal ein Problem und weiß nicht wie ich dazu bei google suchen soll. Und zwar hab ich eine Zahl als STRING -.- und wollte mit dieser nun eine if Abfrage machen. If Zahl > 50 then ....
bitverschiebung Erkennen
06/29/2012 - General Coding - 2 Replies
Hallo Epvlers, Ich Wusste nicht genau wo ich das hier hinposten soll ich Hoffe ich bin hier richtig. das was ich hier Posten werde sind teile eines Datenpackets aus Fiesta online. Da ich Bisher recht wenig mit Bitverschiebung zutun hatte bekomme ich das nicht gelöst aber ich weiß das die Lösung über binär Code geht so nun meine Daten byte 166 = binar 10100110 = 10 in client = 1011 byte Datenpacket 244 = binar 11110100 = 15 in client = 10000 byte 211 = binar 11010100 = 13 in client =...
zahl
02/04/2011 - AutoIt - 2 Replies
wie kann man eine variable deklarieren die alle zahlen umfasst die größer sind als 0? also ich mein $zahl = (alles über 0 )
Zahl ?
03/31/2008 - Kal Online - 3 Replies
Kurze frage ... Welche zahl muss ich da nu raus nehmen was ich in UCE unter FIRST SCAN und NEXT SCAN schreiben muss.... ( skill ( key "knight-5") ( name "Transcendental Blow") ( limit knight)



All times are GMT +1. The time now is 18:58.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.